ホームページ > バックエンド開発 > PHPチュートリアル > laravel 5はテンプレートテーマ関数を実装します_PHPチュートリアル

laravel 5はテンプレートテーマ関数を実装します_PHPチュートリアル

WBOY
リリース: 2016-07-13 10:05:46
オリジナル
1189 人が閲覧しました

laravel 5はテンプレートテーマ機能を実装しています

多くのCMにはテンプレートテーマ機能があり、設定を通じてこの機能を実装するにはどうすればよいですか?今日はこの問題について議論します。

ご存知のとおり、laravel レンダリング テンプレートは View::make() を通じて実装され、テンプレート ファイルのパスを明示的に指定する必要があります:

コードは次のとおりです:


関数インデックス()
{
return View::make('index.index');
}

この場合、テンプレート テーマ関数を自分で実装する必要があるのは、テーマ名に対応するディレクトリにテンプレート ファイルを配置することだけです。たとえば、デフォルトのテーマがデフォルトの場合、次のように記述します。

コードは次のとおりです:

関数インデックス()
{
return View::make('default.index.index');
}

カスタムテーマカスタム:

コードは次のとおりです:

関数インデックス()
{
return View::make('custom.index.index');
}

設定ファイルからテーマ名を読み取ります:

コードは次のとおりです:

関数インデックス()
{
return View::make(Config::get('app.theme','default').'.index.index');
}

これは基本的にテンプレートテーマの機能を実現しますが、まだ問題があります。つまり、カスタムテーマはすべてのデフォルトテーマのすべてのテンプレートを実装する必要があります。そうしないと、一部のページテンプレートファイルでエラーが発生するため、さらなる最適化が必要です:

コードは次のとおりです:

関数インデックス()
{
$theme = Config::get('app.theme','default');
$tpl = $theme.'.index.index';
if (!View::exists($tpl)) {
$tpl = 'default.index.index';
}
return View::make($tpl);
}

つまり、テンプレートをレンダリングする前に、まずテンプレート ファイルが存在するかどうかを確認し、存在しない場合は、デフォルト テーマの対応するテンプレートが使用されます。

非常に多くのコード行があるため、この時点で、Response::view() が View::make() と同等であることがわかり、Response にもカプセル化が行われます。メソッド Response::macro() メソッドを使用してマクロを定義でき、ロジックをマクロにカプセル化できます:

コードは次のとおりです:

Response::macro('render',function($path,$data=array()){
$theme = Config::get('app.theme','default');
$tpl = $theme.'.'.$path;
if (!View::exists($tpl)) {
$tpl = 'デフォルト。' . }
return Response::view($tpl,$data);
});

使用:

コードは次のとおりです:

関数インデックス()
{
$bindings = array(
「タイトル」 => 「ホームページ」
);
return Response::render('index.index',$bindings);
}

テンプレートに渡される変数は、Response::render の 2 番目のパラメータを渡す必要があることに注意してください。

今日のチュートリアルはここまでです。後で詳しく分析していきます。気に入っていただければ幸いです。

http://www.bkjia.com/PHPjc/962929.html

本当http://www.bkjia.com/PHPjc/962929.html技術記事 laravel 5ではテンプレートテーマ機能が実装されていますが、設定によりテーマを切り替えることができます。今日は探検に来ました...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート