如何在laravel中切换布局


How to switch between layouts in laravel?

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

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

------------编辑

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

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

例如:

用户登录时:

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

在控制器中:

  • Laravel 4

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

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

或者,如果您正在使用刀片:

  • Laravel 4

    @extends(Session::get('userlayout', 'layouts.default'))
    
  • Laravel 3

    @layout(Session::get('userlayout', 'layouts.default'))