我找到了:
<link rel="stylesheet" href="{{ URL::asset('assets/css/bootstrap.min.css') }}">
要查看this link以获取更多信息。 我该怎么做才能从&#34; / path-to-theme / img /&#34;加载CSS而不是&#34; / public&#34;文件夹中。
请帮帮我!非常感谢你!
答案 0 :(得分:2)
所有资产必须位于public
目录中。在该目录中,您可以使用您可能想要使用的任何文件夹结构,例如。 public/path-to-theme/etc
。
可能还有其他解决方案(没有测试过),但有点凌乱。
您可以创建AssetsController
并在该控制器中根据模板设置加载文件。我不确定你的情况究竟如何,但我可以想象以下内容。用户具有主题的首选项(存储在DB中的users表中)。在app.php
中,您可以创建template
配置变量。此变量的值是默认主题,如果未设置特定主题(将由用户设置或基于输入字段或get参数(或其他)),将使用该默认主题。
array(
'theme' => 'default',
),
在AssetsController中你冷创建一个getCss动作并加载与你需要的css相对应的主题:
public function getCss() {
$theme = Config::get('app.theme');
return file_get_contents($theme.'/stylesheet.css');
}
在routes.php
内,您可以创建以下路线
Route::get('stylesheet.css', array('uses' => 'AssetsController@getCss'));
要在您的视图文件中加载您的css,请添加以下内容:
<link rel="stylesheet" href="{{ URL::action('AssetsController@getCss') }}">
这适用于默认主题。如果要加载特定于用户的主题首选项,可以在过滤器(filters.php
)中执行此操作,例如在auth过滤器或filters.php中的自定义过滤器中(应将该过滤器名称附加到原始路径)你要显示的页面。)
Route::filter('auth', function()
{
Config::set('app.theme', Auth::user()->theme);
});
仅在用户登录时才有效。但在不同的过滤器中,您可以检查是否设置了不同的参数(例如,get,post或session变量)。
希望这可能有所帮助。
答案 1 :(得分:1)
如果您已切换到Laravel 5,可以尝试使用以下功能的包:
在此处试试:igaster/laravel-theme
答案 2 :(得分:0)
资产必须发布到public
文件夹。您可以使用command prompt/terminal
:
php artisan asset:publish
php artisan asset:publish vendor/package
php artisan asset:publish --path="vendor/package"
使用合适的一个。 Laravel
网站上的Check the documentation和另一个related question。