我创建了一个有1个设计的网站。可能有不同角色的用户。角色是下一个:
网站上的每个用户都有他的公司(在数据库中是整数字段),我想让每个role - admin of company
的用户可以改变他公司的网站设计(用于身体,页眉,页脚的起始颜色)等等。)。例如company 1
有黄色设计,company 2
红色等等。到目前为止,我想出了这样的想法:
在表公司中扩展其他列的表格模式(body_color-string,footer_color-string等),并将每个公司的值写入数据库。
用户成功登录后,这些值会在会话中的数据库和我的app.blade.php
覆盖css部分中加载会话值。
例如,如果我有div
<div class="test123">Something</div>
我会在app.blade.php
中覆盖该值,如果未设置会话,则应用默认颜色white
。
<style>
.test123 {
background-color:{{ Session::get('body_color',"white") }}}
</style>
这有效,但它有点混乱,所以我会在以后要求一些建议或改进(当我有高度,某些元素的宽度等)时......
我是以正确的方式做到这一点,还是可以做得更容易?
答案 0 :(得分:1)
你可以这样做:
您将用户设置的所有样式保存到DB(companyId,styles)
并在页面上添加<head>
<style type="text/css">
<?php echo $styles ?>
</style>
$ styles - 来自服务器的用户公司的所有样式的字符串,您可以使用会话等。
答案 1 :(得分:0)
我使用了类似的功能,并按如下方式构建:
在管理页面上,使用以下内容循环显示所有可用属性:
StyleAttribute ::所有()
并为每个创建一个表单字段。
现在,您可以将填充的值存储在样式模型中,与正确的用户对应。
在前端<head>
中,您可以在<style>
元素内执行以下操作:
Style :: where(&#39; user_id&#39;,$ current_user_id) - &gt; get();
或在Eloquent中使用预定义的关系。然后,您唯一要做的就是回显属性名称和值,然后进行设置。
这种方法的优点是,当您想要使另一个样式属性可用时,您只需将其添加到style_attribute表即可。祝你好运!
答案 2 :(得分:0)
保存设置时为每个公司生成样式表。
然后在加载现有样式后将其放入刀片中:
@if($hasCustomStylesheet){
<link rel="stylesheet" href="/css/{{ $customeStyleSheetName }}">
@endif