Laravel 4アプリケーションのルートディレクトリに、フォルダーthemes
があります。themes
フォルダー、default
とAzure
があります。これからビューにアクセスするにはどうすればいいですかthemes/default
=特定のルートのフォルダー。
Route::get('{slug}', function($slug) {
// make view from themes/default here
});
-app
-テーマ
--- default
--- Azure
localhost/laravel/app/themes/default
フォルダーからビューをロードする必要があります。これを説明してください。
ここでは、public
フォルダーからプロジェクトにアクセスしていません。これの代わりに、プロジェクトルート自体からアクセスしています。
Using alternative path for views
here に関するフォーラムの議論を見ました。しかし、私はこれについて少し混乱しています。議論された解決策は、
location
のように追加します。
View::addLocation('/path/to/your/views');
次に、テーマにnamespace
を追加し、
View::addNamespace('theme', '/path/to/themes/views');
次に、レンダリングします
return View::make('theme::view.name');
/path/to/
の値は何ですか?
パスを変更せずに同じオペレーティングシステムで同じプロジェクトを使用できますか?
はい、次を使用してこれを行うことができます。
以下をapp/start/global.php
に入れます
View::addLocation(app('path').'/themes/default');
View::addNamespace('theme', app('path').'/themes/default');
次に、デフォルトの方法のようにビューを呼び出し、
return View::make('page');
これにより、page.php
フォルダからpage.blade.php
またはproject_directory/app/themes/defualt
ファイルがレンダリングされます。
これはLaravel 4.で完全に可能です。実際にビュー環境になります。名前空間のヒントまたはFinderがカスケードする追加の場所だけを登録できます。見てみましょう ここで
次のような場所を追加します。
View::addLocation('/path/to/your/views');
ただし、パスが配列に追加されるときに競合するファイル名がある場合に備えて、名前空間を指定すると簡単になります。したがって、適切な一致が見つかるまでカスケードするだけです。名前空間ビューは、二重コロン構文でロードされます。
View::addNamespace('theme', '/path/to/themes/views');
return View::make('theme::view.name');
AddNamespaceには、単一のパスの代わりにビューパスの配列を指定することもできます。
laravel 5用のテーマパッケージを開発しました。
ここで試してください: igaster/laravel-theme
\View::addLocation($directory);
は正常に機能しますが、それを行う新しい正しい方法はloadViewsFrom($path, $namespace)
(すべてのサービスプロバイダーで利用可能)を使用することです。