不同公司的不同css - Laravel

时间:2016-09-15 10:43:18

标签: php css laravel laravel-5.1

我创建了一个有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>

这有效,但它有点混乱,所以我会在以后要求一些建议或改进(当我有高度,某些元素的宽度等)时......

我是以正确的方式做到这一点,还是可以做得更容易?

3 个答案:

答案 0 :(得分:1)

你可以这样做:

您将用户设置的所有样式保存到DB(companyId,styles)

并在页面上添加<head>

<style type="text/css">
   <?php echo $styles ?>
</style>

$ styles - 来自服务器的用户公司的所有样式的字符串,您可以使用会话等。

答案 1 :(得分:0)

我使用了类似的功能,并按如下方式构建:

  1. 创建一个名为StyleAttribute的模型及其表,用于存储管理员可填写的属性。使用以下列:id,name,default_value。
  2. 创建一个名为Style的模型及其包含列的表,例如:id,user_id,style_attribute_id,value。
  3. 在管理页面上,使用以下内容循环显示所有可用属性:

    StyleAttribute ::所有()

  4. 并为每个创建一个表单字段。

    1. 现在,您可以将填充的值存储在样式模型中,与正确的用户对应。

    2. 在前端<head>中,您可以在<style>元素内执行以下操作:

      Style :: where(&#39; user_id&#39;,$ current_user_id) - &gt; get();

    3. 或在Eloquent中使用预定义的关系。然后,您唯一要做的就是回显属性名称和值,然后进行设置。

      这种方法的优点是,当您想要使另一个样式属性可用时,您只需将其添加到style_attribute表即可。祝你好运!

答案 2 :(得分:0)

保存设置时为每个公司生成样式表。

然后在加载现有样式后将其放入刀片中:

@if($hasCustomStylesheet){
    <link rel="stylesheet" href="/css/{{ $customeStyleSheetName }}">
@endif