正常情况下,我们会在@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'] ])
无效
答案 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 )