1.4. テンプレートロケーター

Qiqは、名前付きテンプレートを任意の数のディレクトリパスから検索します。Template::new()pathsの配列を渡すことができます。

$tpl = Template::new(
    paths: [
        '/path/to/custom/templates',
        '/path/to/default/templates',
    ],
);

あるいは、TemplateLocatorに直接指示することもできます。

$tpl->getTempLatelocator()->setPaths([
    '/path/to/custom/templates',
    '/path/to/default/templates',
]);

TemplateLocatorは、最初のディレクトリパスから最後のディレクトリパスまで、指定されたテンプレートを検索します。

/*
searches first for:  /path/to/custom/templates/foo.php,
and then second for: /path/to/default/templates/foo.php
*/
$output = $tpl('foo');

もし必要なら、Templateのインスタンス化の後でパスを変更し、TemplateLocatorにディレクトリパスを追加または前置することができます。

$tpl->getTemplateLocator()->prependPath('/higher/precedence/templates');
$tpl->getTemplateLocator()->appendPath('/lower/precedence/templates');

1.4. サブディレクトリ

サブディレクトリにあるテンプレートをレンダリングするには、テンプレート名にサブディレクトリを使用します。

// renders the "foo/bar/baz.php" template
$output = $tpl('foo/bar/baz');

1.4. ファイル名の拡張子

デフォルトでは、TemplateLocatorはテンプレートファイル名に.phpを自動で付加します。もしテンプレートファイルの拡張子が違う場合は、setExtension()メソッドで変更します。

$templateLocator = $tpl->getTempLatelocator();
$templateLocator->setExtension('.phtml');

あるいは、Template作成時に設定することもできます。

$tpl = Template::new(
    extension: '.phtml'
);

1.4. コレクション

メール用や管理者ページ用など、テンプレートのコレクションを識別するのが便利な場合があります。(他のシステムでは、これらを"グループ"、"フォルダ"、"名前空間"と呼ぶことがあります)。

ディレクトリパスとコレクションを関連付けるには、パスの前にコレクション名とコロンを付けます。

$tpl = new Template(
    paths: [
        'admin:/path/to/admin/templates',
        'email:/path/to/email/templates',
    ]
);

コレクションからテンプレートをレンダリングするには、テンプレート名の前にコレクション名を付けます。

$output = $tpl('email:notify/subscribed');

コレクションパスの設定、追加、およびプリペンドは、接頭辞なしのテンプレートパスの"main"、または"default"コレクションと同じように行うことができます。