ビューパーサー

ビューパーサーは、ビューファイルに含まれる疑似変数に対して、単純なテキスト置換を実行できます。単純な変数または変数タグのペアを解析できます。

疑似変数名または制御構造は、次のように中かっこで囲みます

<html>
<head>
    <title>{blog_title}</title>
</head>
<body>
    <h3>{blog_heading}</h3>

    {blog_entries}
        <h5>{title}</h5>
        <p>{body}</p>
    {/blog_entries}

</body>
</html>

これらの変数は実際の PHP 変数ではなく、テンプレート (ビューファイル) から PHP を排除できるプレーンテキスト表現です。

注記

CodeIgniter は、このクラスを使用することを**要求しません**。ビューページで純粋な PHP を使用すると (たとえば、ビューレンダラー を使用する場合)、少し高速に実行できるためです。ただし、PHP を使用すると混乱するデザイナーと作業する場合、一部の開発者は何らかの形式のテンプレートエンジンを使用することを好みます。

ビューパーサークラスの使用

パーサークラスを読み込む最も簡単な方法は、そのサービスを使用することです

<?php

$parser = \Config\Services::parser();

あるいは、Parser クラスをデフォルトのレンダラーとして使用していない場合は、直接インスタンス化できます

<?php

$parser = new \CodeIgniter\View\Parser();

その後、提供される 3 つの標準レンダリングメソッド render()setVar()setData() のいずれかを使用できます。また、setDelimiters() メソッドを使用して、区切り文字を直接指定することもできます。

重要

Parser を使用すると、ビューテンプレートは従来のビュー PHP スクリプトのようにではなく、パーサー自体によってのみ処理されます。このようなスクリプトの PHP コードはパーサーによって無視され、置換のみが実行されます。

これは意図的なものです。PHP がないビューファイルです。

機能

Parser クラスは、アプリケーションのビューパスに保存されている「PHP/HTML スクリプト」を処理します。これらのスクリプトには PHP を含めることはできません。

各ビューパラメータ (疑似変数と呼びます) は、指定した値のタイプに基づいて置換をトリガーします。疑似変数は PHP 変数に抽出されません。代わりに、その値は疑似変数構文を介してアクセスされ、その名前は中かっこ内で参照されます。

パーサークラスは、render() を呼び出すまで疑似変数設定を累積するために、内部で連想配列を使用します。これは、疑似変数名が固有である必要があることを意味します。そうでない場合、後のパラメータ設定は以前のパラメータ設定を上書きします。

これは、スクリプト内の異なるコンテキストの パラメータ値のエスケープにも影響します。エスケープされた各値に一意のパラメータ名を付ける必要があります。

パーサーテンプレート

次のように、render() メソッドを使用して、単純なテンプレートを解析 (またはレンダリング) できます

<?php

$data = [
    'blog_title'   => 'My Blog Title',
    'blog_heading' => 'My Blog Heading',
];

return $parser->setData($data)->render('blog_template');

ビュパラメータは、テンプレートで置き換えられるデータの連想配列として setData() に渡されます。上記の例では、テンプレートには 2 つの変数が含まれています。 {blog_title}{blog_heading} render() への最初のパラメータには、ビューファイル の名前が含まれています。ここで、*blog_template* はビューファイルの名前です。

重要

ファイル拡張子が省略されている場合、ビューは .php 拡張子で終わることが想定されています。

パーサー設定オプション

いくつかのオプションを render() または renderString() メソッドに渡すことができます。

  • cache - ビューの結果を保存する時間 (秒単位)。renderString() では無視されます

  • cache_name - キャッシュされたビューの結果を保存/取得するために使用される ID。デフォルトはビューパスです。renderString() では無視されます

  • saveData - 後続の呼び出しのためにビュデータパラメータを保持する必要がある場合は true。デフォルトは **true** です

  • cascadeData - 疑似変数設定をネストされた置換に渡す必要がある場合は true。デフォルトは **true** です

<?php

return $parser->render('blog_template', [
    'cache'      => HOUR,
    'cache_name' => 'something_unique',
]);

置換のバリエーション

サポートされている置換には、単純、ループ、ネストの 3 つのタイプがあります。置換は、疑似変数が追加されたのと同じ順序で実行されます。

パーサーによって実行される**単純な置換**は、次の例のように、対応するデータパラメータがスカラー値または文字列値のいずれかである疑似変数の 1 対 1 の置き換えです

<?php

$template = '<head><title>{blog_title}</title></head>';
$data     = ['blog_title' => 'My ramblings'];

return $parser->setData($data)->renderString($template);
// Result: <head><title>My ramblings</title></head>

Parser は、ネストされた置換またはループに使用される「変数ペア」、および条件付き置換のためのいくつかの高度な構成を使用して、置換をさらに進めます。

パーサーが実行されると、一般的に

  • 条件付き置換を処理します

  • ネストされた/ループ置換を処理します

  • 残りの単一置換を処理します

ループ置換

ループ置換は、疑似変数の値が行設定の配列などの配列のシーケンシャル配列である場合に発生します。

上記のサンプルコードでは、単純な変数を置き換えることができます。各反復に新しい値が含まれている変数のブロック全体を繰り返したい場合はどうでしょうか。ページの先頭に示したテンプレートの例を考えてみましょう

<html>
<head>
    <title>{blog_title}</title>
</head>
<body>
    <h3>{blog_heading}</h3>

    {blog_entries}
        <h5>{title}</h5>
        <p>{body}</p>
    {/blog_entries}

</body>
</html>

上記のコードでは、変数のペア {blog_entries} データ… {/blog_entries} に気付くでしょう。このような場合、これらのペアの間にあるデータの塊全体が、パラメータ配列の "blog_entries" 要素の行数に対応して複数回繰り返されます。

変数ペアの解析は、上記の単一変数を解析するために示したコードと同じコードを使用して行われますが、変数ペアデータに対応する多次元配列を追加します。この例を考えてみましょう。

<?php

$data = [
    'blog_title'   => 'My Blog Title',
    'blog_heading' => 'My Blog Heading',
    'blog_entries' => [
        ['title' => 'Title 1', 'body' => 'Body 1'],
        ['title' => 'Title 2', 'body' => 'Body 2'],
        ['title' => 'Title 3', 'body' => 'Body 3'],
        ['title' => 'Title 4', 'body' => 'Body 4'],
        ['title' => 'Title 5', 'body' => 'Body 5'],
    ],
];

return $parser->setData($data)->render('blog_template');

擬似変数 blog_entries の値は、連想配列の順次配列です。外側のレベルには、ネストされた各「行」に関連付けられたキーがありません。

「ペア」データが既に多次元配列であるデータベースの結果から取得される場合は、データベースの getResultArray() メソッドをそのまま使用できます。

<?php

$query = $db->query('SELECT * FROM blog');

$data = [
    'blog_title'   => 'My Blog Title',
    'blog_heading' => 'My Blog Heading',
    'blog_entries' => $query->getResultArray(),
];

return $parser->setData($data)->render('blog_template');

ループしようとしている配列に配列ではなくオブジェクトが含まれている場合、パーサーは最初にオブジェクトの asArray() メソッドを探します。存在する場合、そのメソッドが呼び出され、結果の配列は上記のようにループされます。 asArray() メソッドが存在しない場合、オブジェクトは配列としてキャストされ、そのパブリックプロパティがパーサーで使用可能になります。

これは、すべてのパブリックおよびプロテクトされたプロパティ(_optionsプロパティを除く)を返し、パーサーで使用できるようにする asArray() メソッドを持つエンティティクラスで特に役立ちます。

ネストされた置換

ネストされた置換は、擬似変数の値がデータベースのレコードのような値の連想配列である場合に発生します。

<?php

$data = [
    'blog_title'   => 'My Blog Title',
    'blog_heading' => 'My Blog Heading',
    'blog_entries' => [
        [
            'title' => 'Title 1',
            'body'  => 'Body 1',
        ],
    ],
];

return $parser->setData($data)->render('blog_template');

擬似変数 blog_entries の値は連想配列です。その内部で定義されたキーと値のペアは、その変数の変数ペアループ内で公開されます。

上記で機能する可能性のある **blog_template.php**

<h1>{blog_title} - {blog_heading}</h1>
{blog_entries}
    <div>
        <h2>{title}</h2>
        <p>{body}</p>
    </div>
{/blog_entries}

blog_entries スコープ内で他の擬似変数にアクセスできるようにするには、 cascadeData オプションがtrueに設定されていることを確認してください。

コメント

コメントを {#  #} 記号で囲むことにより、解析中に無視され削除されるコメントをテンプレートに配置できます。

{# This comment is removed during parsing. #}
{blog_entry}
    <div>
        <h2>{title}</h2>
        <p>{body}</p>
    </div>
{/blog_entry}

カスケーディングデータ

ネストされた置換とループ置換の両方で、データペアを内部置換にカスケードするオプションがあります。

次の例は、カスケーディングの影響を受けません。

<?php

$template = '{name} lives in {locations}{city} on {planet}{/locations}.';

$data = [
    'name'      => 'George',
    'locations' => [
        ['city' => 'Red City', 'planet' => 'Mars'],
    ],
];

return $parser->setData($data)->renderString($template);
// Result: George lives in Red City on Mars.

この例では、カスケーディングに応じて異なる結果が得られます。

<?php

$template = '{locations}{name} lives in {city} on {planet}{/locations}.';

$data = [
    'name'      => 'George',
    'locations' => [
        ['city' => 'Red City', 'planet' => 'Mars'],
    ],
];

return $parser->setData($data)->renderString($template, ['cascadeData' => false]);
// Result: {name} lives in Red City on Mars.

// or

return $parser->setData($data)->renderString($template, ['cascadeData' => true]);
// Result: George lives in Red City on Mars.

解析の防止

{noparse} {/noparse} タグペアを使用して、解析されないページの部分を指定できます。このセクションの内容はそのままになり、括弧の間のマークアップに対して変数の置換、ループなどは行われません。

{noparse}
    <h1>Untouched Code</h1>
{/noparse}

条件付きロジック

Parserクラスは、 ifelse、および elseif 構文を処理するためのいくつかの基本的な条件をサポートしています。すべての if ブロックは、 endif タグで閉じる必要があります。

{if $role=='admin'}
    <h1>Welcome, Admin!</h1>
{endif}

この単純なブロックは、解析中に次のように変換されます。

<?php if ($role === 'admin'): ?>
    <h1>Welcome, Admin!</h1>
<?php endif ?>

ifステートメント内で使用されるすべての変数は、同じ名前で事前に設定されている必要があります。それ以外は、標準のPHP条件とまったく同じように扱われ、すべての標準PHPルールがここで適用されます。 =====!==<> など、通常どおりに比較演算子を使用できます。

{if $role=='admin'}
    <h1>Welcome, Admin</h1>
{elseif $role=='moderator'}
    <h1>Welcome, Moderator</h1>
{else}
    <h1>Welcome, User</h1>
{endif}

警告

バックグラウンドでは、条件は eval() を使用して解析されるため、条件内で使用されるユーザーデータに注意する必要があります。そうしないと、アプリケーションがセキュリティリスクにさらされる可能性があります。

条件付き区切り文字の変更

テンプレートに次のようなJavaScriptコードがある場合、条件として解釈できる文字列があるため、パーサーは構文エラーを発生させます。

<script type="text/javascript">
    var f = function() {
        if (hasAlert) {
            alert('{message}');
        }
    }
</script>

その場合は、 setConditionalDelimiters() メソッドを使用して条件の区切り文字を変更し、誤って解釈されないようにすることができます。

<?php

$parser->setConditionalDelimiters('{%', '%}');

この場合、テンプレートにコードを記述します。

{% if $role=='admin' %}
    <h1>Welcome, Admin</h1>
{% else %}
    <h1>Welcome, User</h1>
{% endif %}

データのエスケープ

デフォルトでは、すべての変数置換はエスケープされ、ページでのXSS攻撃を防ぎます。CodeIgniterの esc() メソッドは、一般的な html、HTML attr 内、 css 内など、いくつかの異なるコンテキストをサポートしています。他に何も指定されていない場合、データはHTMLコンテキスト内にあると見なされます。 esc() フィルターを使用して、使用するコンテキストを指定できます。

{ user_styles | esc(css) }
<a href="{ user_link | esc(attr) }">{ title }</a>

絶対に何かを使用する必要があり、エスケープされない場合があります。開始と終了のブレースに感嘆符を追加することで、これを行うことができます。

{! unescaped_var !}

フィルター

単一の変数置換には、表示方法を変更するために1つ以上のフィルターを適用できます。これらは出力を大幅に変更することを意図したものではありませんが、同じ変数データを異なるプレゼンテーションで再利用する方法を提供します。上記の esc フィルターはその一例です。日付は別の一般的なユースケースであり、同じページの複数のセクションで同じデータを異なる形式にする必要がある場合があります。

フィルターは、擬似変数名の後に来るコマンドであり、パイプ記号 | で区切られます。

// -55 is displayed as 55
{ value|abs }

パラメータが引数を取る場合は、コンマで区切り、括弧で囲む必要があります。

{ created_at|date(Y-m-d) }

複数のフィルターをパイプでつなげることで、値に複数のフィルターを適用できます。それらは左から右の順序で処理されます。

{ created_at|date_modify(+5 days)|date(Y-m-d) }

提供されているフィルター

パーサーを使用すると、次のフィルターを使用できます。

フィルター

引数

説明

abs

数値の絶対値を表示します。

{ v|abs }

capitalize

文字列をセンテンスケースで表示します。最初の文字は大文字で、残りは小文字です。

{ v|capitalize}

date

format (Y-m-d)

PHPの **date** と互換性のあるフォーマット文字列。

{ v|date(Y-m-d) }

date_modify

加算/減算する値

+5 day-1 week など、日付を変更するための **strtotime** と互換性のある文字列。

{ v|date_modify(+1 day) }

default

デフォルト値

変数がempty()の場合、デフォルト値を表示します。

{ v|default(just in case) }

esc

html, attr, css, js

データをエスケープするコンテキストを指定します。

{ v|esc(attr) }

excerpt

phrase, radius

指定されたフレーズから単語の半径内にあるテキストを返します。 **excerpt** ヘルパー関数と同じです。

{ v|excerpt(green giant, 20) }

highlight

phrase

‘<mark></mark>’ タグを使用して、テキスト内の指定されたフレーズを強調表示します。

{ v|highlight(view parser) }

highlight_code

HTML/CSSを使用してコードサンプルを強調表示します。

{ v|highlight_code }

limit_chars

limit

文字数を $limit に制限します。

{ v|limit_chars(100) }

limit_words

limit

単語数を $limit に制限します。

{ v|limit_words(20) }

local_currency

currency, locale, fraction

ローカライズされたバージョンの通貨を表示します。「currency」値は、3文字のISO 4217通貨コードです。

{ v|local_currency(EUR,en_US) }

local_number

type, precision, locale

ローカライズされたバージョンの数値を表示します。「type」は、decimal、currency、percent、scientific、spellout、ordinal、durationのいずれかになります。

{ v|local_number(decimal,2,en_US) }

lower

文字列を小文字に変換します。

{ v|lower }

nl2br

すべての改行文字(n)をHTML <br/> タグに置き換えます。

{ v|nl2br }

number_format

places

パーサー内で使用するためにPHPの **number_format** 関数をラップします。

{ v|number_format(3) }

prose

テキスト本文を取得し、 **auto_typography()** メソッドを使用して、より見やすく読みやすい散文に変えます。

{ v|prose }

round

places, type

数値を指定された場所に丸めます。 **ceil** および **floor** のタイプを渡して、代わりにそれらの関数を使用できます。

{ v|round(3) } { v|round(ceil) }

strip_tags

許可される文字

PHPの **strip_tags** をラップします。許可されるタグの文字列を受け入れることができます。

{ v|strip_tags(<br>) }

title

すべての小文字で、各単語が大文字の「タイトルケース」バージョンの文字列を表示します。

{ v|title }

upper

文字列をすべて大文字で表示します。

{ v|upper }

「local_number」フィルターに関連する詳細については、PHPのNumberFormatterを参照してください。

カスタムフィルター

**app/Config/View.php** を編集し、 $filters 配列に新しいエントリを追加することで、独自のフィルターを簡単に作成できます。各キーは、ビューでフィルターが呼び出される名前であり、その値は有効なPHP呼び出し可能です。

<?php

namespace Config;

use CodeIgniter\Config\View as BaseView;

class View extends BaseView
{
    public $filters = [
        'foo'        => '\Some\Class::methodName',
        'str_repeat' => 'str_repeat', // native php function
    ];

    // ...
}

パーサープラグイン

プラグインを使用すると、パーサーを拡張し、各プロジェクトのカスタム機能を追加できます。それらは任意のPHP呼び出し可能であり、実装が非常に簡単です。テンプレート内では、プラグインは {+ +} タグで指定されます。

{+ foo +} inner content {+ /foo +}

この例は、 **foo** という名前のプラグインを示しています。開始タグと終了タグの間にあるコンテンツを操作できます。この例では、「inner content」というテキストを処理できます。プラグインは、擬似変数の置換が行われる前に処理されます。

プラグインは、上記のように多くの場合タグペアで構成されますが、終了タグのない単一タグにすることもできます。

{+ foo +}

開始タグには、プラグインの動作をカスタマイズできるパラメータを含めることもできます。パラメータは、キーと値のペアとして表されます。

{+ foo bar=2 baz="x y" +}

パラメータは単一の値にすることもできます。

{+ include somefile.php +}

提供されているプラグイン

パーサーを使用すると、次のプラグインが利用可能です。

プラグイン

引数

説明

current_url

current_url ヘルパー関数のエイリアスです。

{+ current_url +}

previous_url

previous_url ヘルパー関数のエイリアスです。

{+ previous_url +}

siteURL

site_url ヘルパー関数のエイリアスです。

{+ siteURL “login” +}

mailto

email, title, attributes

mailto ヘルパー関数のエイリアスです。

{+ mailto email=foo@example.com title=”Stranger Things” +}

safe_mailto

email, title, attributes

safe_mailto ヘルパー関数のエイリアスです。

{+ safe_mailto email=foo@example.com title=”Stranger Things” +}

lang

言語文字列

lang ヘルパー関数のエイリアスです。

{+ lang number.terabyteAbbr +}

validation_errors

フィールド名(オプション)

フィールドのエラー文字列(指定されている場合)またはすべての検証エラーを返します。

{+ validation_errors +} , {+ validation_errors field=”email” +}

route

ルート名

route_to ヘルパー関数のエイリアスです。

{+ route “login” +}

csp_script_nonce

csp_script_nonce ヘルパー関数のエイリアスです。

{+ csp_script_nonce +}

csp_style_nonce

csp_style_nonce ヘルパー関数のエイリアスです。

{+ csp_style_nonce +}

プラグインの登録

最も単純な方法では、新しいプラグインを登録して使用できるようにするには、**app/Config/View.php** の $plugins 配列にプラグインを追加するだけです。キーはテンプレートファイル内で使用されるプラグインの名前です。値は、静的クラスメソッドを含む、有効なPHP呼び出し可能です。

<?php

namespace Config;

use CodeIgniter\Config\View as BaseView;

class View extends BaseView
{
    public $plugins = [
        'foo' => '\Some\Class::methodName',
    ];

    // ...
}

クロージャを使用することもできますが、これらは設定ファイルのコンストラクタでのみ定義できます。

<?php

namespace Config;

use CodeIgniter\Config\View as BaseView;

class View extends BaseView
{
    public $plugins = [];

    public function __construct()
    {
        $this->plugins['bar'] = static fn (array $params = []) => $params[0] ?? '';

        parent::__construct();
    }

    // ...
}

呼び出し可能オブジェクトが単独で存在する場合、それは単一のタグとして扱われ、開始/終了タグとしては扱われません。プラグインからの戻り値に置き換えられます。

<?php

namespace Config;

use CodeIgniter\Config\View as BaseView;

class View extends BaseView
{
    public $plugins = [
        'foo' => '\Some\Class::methodName',
    ];

    // ...
}

/*
 * Tag is replaced by the return value of Some\Class::methodName() static function.
 * {+ foo +}
 */

呼び出し可能オブジェクトが配列で囲まれている場合、タグ間のコンテンツを操作できる開始/終了タグのペアとして扱われます。

<?php

namespace Config;

use CodeIgniter\Config\View as BaseView;

class View extends BaseView
{
    public $plugins = [
        'foo' => ['\Some\Class::methodName'],
    ];

    // ...
}

// {+ foo +} inner content {+ /foo +}

使用上の注意

テンプレートで参照されていない置換パラメータを含めた場合、それらは無視されます。

<?php

$template = 'Hello, {firstname} {lastname}';
$data     = [
    'title'     => 'Mr',
    'firstname' => 'John',
    'lastname'  => 'Doe',
];

return $parser->setData($data)->renderString($template);
// Result: Hello, John Doe

テンプレートで参照されている置換パラメータを含めなかった場合、元の擬似変数が結果に表示されます。

<?php

$template = 'Hello, {firstname} {initials} {lastname}';
$data     = [
    'title'     => 'Mr',
    'firstname' => 'John',
    'lastname'  => 'Doe',
];

return $parser->setData($data)->renderString($template);
// Result: Hello, John {initials} Doe

変数ペアのように配列が予期されている場合に文字列置換パラメータを指定すると、置換は開始変数ペアタグに対して行われますが、終了変数ペアタグは正しくレンダリングされません。

<?php

$template = 'Hello, {firstname} {lastname} ({degrees}{degree} {/degrees})';
$data     = [
    'degrees'   => 'Mr',
    'firstname' => 'John',
    'lastname'  => 'Doe',
    'titles'    => [
        ['degree' => 'BSc'],
        ['degree' => 'PhD'],
    ],
];

return $parser->setData($data)->renderString($template);
// Result: Hello, John Doe (Mr{degree} {/degrees})

ビューフラグメント

ビューで反復の効果を得るために、変数ペアを使用する必要はありません。変数ペア内にあるものに対してビューフラグメントを使用し、ビューではなくコントローラーで反復を制御することができます。

ビューで反復が制御される例

$template = '<ul>{menuitems}
    <li><a href="{link}">{title}</a></li>
{/menuitems}</ul>';

$data = [
    'menuitems' => [
        ['title' => 'First Link', 'link' => '/first'],
        ['title' => 'Second Link', 'link' => '/second'],
    ]
];

return $parser->setData($data)->renderString($template);

結果

<ul>
    <li><a href="/first">First Link</a></li>
    <li><a href="/second">Second Link</a></li>
</ul>

ビューフラグメントを使用して、コントローラーで反復が制御される例

<?php

$temp      = '';
$template1 = '<li><a href="{link}">{title}</a></li>';
$data1     = [
    ['title' => 'First Link', 'link' => '/first'],
    ['title' => 'Second Link', 'link' => '/second'],
];

foreach ($data1 as $menuItem) {
    $temp .= $parser->setData($menuItem)->renderString($template1);
}

$template2 = '<ul>{menuitems}</ul>';
$data      = [
    'menuitems' => $temp,
];

return $parser->setData($data)->renderString($template2);

結果

<ul>
    <li><a href="/first">First Link</a></li>
    <li><a href="/second">Second Link</a></li>
</ul>

クラスリファレンス

class CodeIgniter\View\Parser
render($view[, $options[, $saveData]])
パラメータ:
  • **$view** (string) – ビューソースのファイル名

  • **$options** (array) – キー/値ペアとしてのオプションの配列

  • **$saveData** (boolean) – trueの場合、他の呼び出しで使用するためにデータを保存します。falseの場合、ビューのレンダリング後にデータをクリーンアップします。

戻り値:

選択したビューのレンダリングされたテキスト

戻り値の型:

string

ファイル名と既に設定されているデータに基づいて出力を構築します。

<?php

return $parser->render('myview');

サポートされているオプション

  • cache - ビューの結果を保存する時間(秒単位)

  • cache_name - キャッシュされたビューの結果を保存/取得するために使用されるID。デフォルトはviewpathです。

  • cascadeData - ネストされた置換またはループ置換が発生した場合に、有効なデータペアを伝播する必要がある場合はtrue

  • saveData - 後続の呼び出しのためにビューデータパラメータを保持する必要がある場合はtrue

条件付き置換が最初に実行され、残りの置換は各データペアに対して実行されます。

renderString($template[, $options[, $saveData]])
パラメータ:
  • **$template** (string) – 文字列として提供されるビュ-ソース

  • **$options** (array) – キー/値ペアとしてのオプションの配列

  • **$saveData** (boolean) – trueの場合、他の呼び出しで使用するためにデータを保存します。falseの場合、ビューのレンダリング後にデータをクリーンアップします。

戻り値:

選択したビューのレンダリングされたテキスト

戻り値の型:

string

提供されたテンプレートソースと既に設定されているデータに基づいて出力を構築します。

<?php

return $parser->renderString('<ul><li>Item 1</li><li>Item 2</li></ul>');

上記のように、サポートされているオプションと動作。

setData([$data[, $context = null]])
パラメータ:
  • **$data** (array) – キー/値ペアとしてのビュ-データ文字列の配列

  • **$context** (string) – データエスケープに使用するコンテキスト。

戻り値:

メソッドチェーンのためのレンダラー。

戻り値の型:

CodeIgniter\View\RendererInterface.

一度に複数のビュ-データを設定します。

<?php

$parser->setData(['name' => 'George', 'position' => 'Boss']);

サポートされているエスケープコンテキスト:html、css、js、url、attr、またはraw。「raw」の場合、エスケープは行われません。

setVar($name[, $value = null[, $context = null]])
パラメータ:
  • **$name** (string) – ビュ-データ変数の名前

  • **$value** (mixed) – このビュ-データの値

  • **$context** (string) – データエスケープに使用するコンテキスト。

戻り値:

メソッドチェーンのためのレンダラー。

戻り値の型:

CodeIgniter\View\RendererInterface.

ビュ-データの単一部分を設定します

<?php

$parser->setVar('name', 'Joe', 'html');

サポートされているエスケープコンテキスト:html、css、js、url、attr、またはraw。「raw」の場合、エスケープは行われません。

setDelimiters($leftDelimiter = '{', $rightDelimiter = '}')
パラメータ:
  • **$leftDelimiter** (string) – 置換フィールドの左側の区切り文字

  • **$rightDelimiter** (string) – 置換フィールドの右側の区切り文字

戻り値:

メソッドチェーンのためのレンダラー。

戻り値の型:

CodeIgniter\View\RendererInterface.

置換フィールドの区切り文字を上書きします。

<?php

$parser->setDelimiters('[', ']');
setConditionalDelimiters($leftDelimiter = '{', $rightDelimiter = '}')
パラメータ:
  • **$leftDelimiter** (string) – 条件式の左側の区切り文字

  • **$rightDelimiter** (string) – 条件式の右側の区切り文字

戻り値:

メソッドチェーンのためのレンダラー。

戻り値の型:

CodeIgniter\View\RendererInterface.

条件式の区切り文字を上書きします。

<?php

$parser->setConditionalDelimiters('{%', '%}');