В блейде Laravel @ расширяет макет с условием, как передавать данные - PullRequest
0 голосов
/ 10 июня 2018

Как обычно, мы передаем некоторые данные в @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 голосов
/ 10 июня 2018

Ваш синтаксис неправильный.Попробуйте вместо этого:

@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

Однако это не похоже на работу , поэтому вы должны поместить эту логику в контроллер.

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 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...