所有资产必须位于public 目录中。在该目录中,您可以使用您可能想要使用的任何文件夹结构,例如。 public/path-to-theme/etc.
可能还有其他解决方案(未测试),但有点混乱。
您可以创建一个AssetsController 并在该控制器中根据模板设置加载文件。我不确定您的具体情况如何,但我可以想象以下情况。用户对主题有偏好(存储在数据库的用户表中)。在app.php 中,您可以创建一个template 配置变量。如果未设置特定主题(例如由用户设置或基于输入字段或获取参数(或其他)),则此变量的值是将使用的默认主题。
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 变量)。
希望这可能会有所帮助。