1

我正在尝试制作一个具有 2 个或更多布局的网站,任何用户都可以更改他/她的布局。
我知道我们可以在控制器中使用布局,例如
public $layout = 'layouts.default'; ...并在方法 $this->layout->nest('content', $view, $data );

但这对我来说没用,它始终是默认值,我的意思是如何动态更改 $layout 的值?
例如,用户将网站视为默认布局,但用户 b 将其视为黑色布局。

------------ 已编辑

我将布局存储在用户表中,但问题是如何在控制器中添加条件语句?存储布局名称的 $laravel 变量是一个属性,在代码中只能设置一次,不能在任何方法之外添加语句来更改它。

4

1 回答 1

5

您可以在用户登录时设置会话变量,以包含从用户表中检索到的要使用的布局名称。然后您可以使用它为您的用户设置布局或回退到默认布局。

例如:

用户登录时:

Session::put('userlayout', $user->layout);

在控制器中:

  • 拉拉维尔 4

    protected $layout = Session::get('userlayout', 'layouts.default');
    
  • 拉拉维尔 3

    public $layout = Session::get('userlayout', 'layouts.default');
    

或者,如果您使用刀片:

  • 拉拉维尔 4

    @extends(Session::get('userlayout', 'layouts.default'))
    
  • 拉拉维尔 3

    @layout(Session::get('userlayout', 'layouts.default'))
    
于 2013-09-04T21:41:57.223 回答