是否可以将样式表传递给控制器的视图?
我有一个master.layout
文件。此主布局用于站点上的每个页面。在网站上,用户可以更改其用户配置文件的颜色和属性,因此在配置文件页面上我需要传递自定义用户样式表或自定义样式规则。
我找到的唯一解决方案是在视图中包含if
语句,如果页面是个人资料页面,则检查是否定义了$style
,如果是,则包括它。但这种做法似乎很笨拙。
是否可以定义布局并从控制器本身传入脚本或样式规则?
修改
样式规则存储在数据库的profile.background_color
和profile.heading_color
等列中。然后,控制器将它们构造成样式表,并对其进行缓存,或者直接在概要视图的<style>
标记内包含样式。我还没有决定采用哪种方式,但两者都有可能。
答案 0 :(得分:0)
关于Facade的建议很奇怪。这对你真的有帮助。
你想要做一些事情。
在您的页面控制器中,您可以添加:
$layout->with('extra_stylesheets', ['pages/someslug.css']);
然后应该使用一点mod_rewrite和htaccess乐趣将.css
文件作为PHP处理,以便可以大量缓存(使用更多.htaccess,谷歌会帮助)。
然后布局是唯一需要检查额外样式表的位置,并且您的页面视图中的逻辑稍微少一点,并且您的输出HTML没有一堆讨厌的<style>
标记。< / p>
答案 1 :(得分:0)
在master.layout
中,确保您拥有@section('userStyle')...@stop
或类似内容。
在您的控制器中,设置属性protected $layout = 'master.layout';
。
按照您目前的步骤构建css并将其存储在php变量$css
中。
然后,您可以使用$this->layout->userStyle = $css
将css加载到布局中。