在Laravel刀片@extends布局中,条件如何传递数据

时间:2018-06-10 09:31:26

标签: php laravel laravel-blade

正常情况下,我们会在@extend中传递一些数据:

@extends('layouts.full', [ 'data' => ['var' => 'key'] ])

我需要在基于@extends

的条件中传递一些数据
@extends( (condition) ? 'layouts.full' : 'layouts.full2')

如何在此传递不同的数据?

@extends( (condition) ? 'layouts.full', [ 'data' => ['var' => 'key'] ] : 'layouts.full' , [ 'data2' => ['var2' => 'key2'] ])

无效

1 个答案:

答案 0 :(得分:2)

你的语法错了。试试这个:

@extends( (condition) ? 'layouts.full' : 'layouts.full2', [ 'data' => ['var' => 'key'] ])

如果根据使用的布局需要不同的数据,则应使用IF语句,以避免测试两次:

@if(condition)
    @extends('layouts.full', [ 'data' => ['var' => 'key'] ])
@else
    @extends('layouts.full2', [ 'data2' => ['var2' => 'key2'] ])
@endif

但是,this doesn't seem to work,所以你应该将这个逻辑放在控制器中。

if(App::environment() === 'local') {
    $view = 'layouts.full';
    $data = ['class' => 'blue'];
} else {
    $view = 'layouts.full2';
    $data = ['class' => 'red'];
}

return view('viewname', compact('view', 'data'));

在视图中:

@extends( $view, $data )