0

是否可以将样式表从控制器传递给视图?

我有一个master.layout文件。此主布局用于网站上的每个页面。在站点上,用户可以更改其用户配置文件的颜色和属性,因此在配置文件页面上,我需要传入自定义用户样式表或自定义样式规则。

我发现的唯一解决方案是if在视图中包含一条语句,如果该页面是个人资料页面,则检查是否$style已定义,如果是则包含它。但这种方法似乎很笨拙。

是否可以从控制器本身定义布局并传入脚本或样式规则?

编辑:

样式规则存储在数据库中的列中,例如profile.background_colorprofile.heading_color。然后控制器将它们构造成样式表,并将其缓存,或者将样式直接包含在<style>配置文件视图的标记中。我还没有决定用哪种方式来做,但两者都是可能的。

4

2 回答 2

0

关于 Facade 的建议很奇怪。这在这里并没有真正帮助你。

你会想做一些事情。

在您的页面控制器中,您可以添加:

$layout->with('extra_stylesheets', ['pages/someslug.css']);

然后.css应该使用一点 mod_rewrite 和 htaccess fun 将该文件作为 PHP 处理,以便它可以被大量缓存(为此使用更多 .htaccess,Google 会提供帮助)。

然后,布局是唯一需要检查额外样式表的位置,并且您的页面视图中的逻辑少一些,并且您的输出 HTML 没有一堆讨厌的<style>标签。

于 2013-11-04T16:09:38.107 回答
0

master.layout,确保你有一个@section('userStyle')...@stop或类似的。

在您的控制器中,设置属性protected $layout = 'master.layout';

按照您当前的做法构建 css 并将其存储在 php 变量$css中。

然后你可以将 css 加载到你的布局中$this->layout->userStyle = $css

于 2013-11-04T18:29:15.873 回答