Как использовать @yield для передачи его в переменную в laravel

#php #laravel #laravel-blade

#php #laravel #laravel-blade

Вопрос:

У меня есть yield из laravel, как я могу получить заголовок страницы

 <title>CDO | FDIS | @yield ('title')</title>
  

как этот

 <?php $test = @yield ('title'); ?>
  

Так что я могу использовать $test для другой функции

Комментарии:

1. Вы не можете. Чего вы пытаетесь достичь? Может быть, есть лучший способ для вашего варианта использования.

2. Это похоже на проблему XY . Может быть, сделайте шаг назад и расскажите нам, какую проблему пытается решить этот код.

3. Мне нужно создать список динамического контроля доступа для моих пользователей

Ответ №1:

Используйте app()->view:

Вы можете использовать app экземпляр для извлечения значения yield, которое определяется разделом.

Например:

 // Assuming you have the following in your view: @section('title', 'Some Title')

$title = app()->view->getSections()['title']; // Some Title
  

app()->view->getSections() Возвращает ассоциативный массив всех разделов, поэтому, чтобы получить конкретный раздел, укажите конкретный индекс из массива.

Из представления вы можете получить доступ к приложению, используя глобальную $app переменную, т.е:

 $app->view or $app['view'].
  

Ответ №2:

Сначала определите раздел

 @section('test')
   Hello World
@endsection
  

Затем

 <?php //@php
    $gotYieldValue =  e($__env->yieldContent('test'));
    echo $gotYieldValue; //This will print "Hello World"
 ?>  //@endphp
  

Ответ №3:

Когда вы открываете тег php: <?php вы начинаете писать фактический PHP и, следовательно, блейд-каталоги (например, @yield не работает).

Если вам нужно включить результат @yield несколько раз, вы можете просто вызвать его несколько раз:

 <title>@yield('title')</title>
...
<h1>@yield('title')</h1>
  

Ответ №4:

сначала вы должны расширить родительский блейд, а затем добавить

 @section('title')
// content here
@endsection
  

Ответ №5:

попробуйте следующий код

В viewslayoutsapp.blade.php

 <title>@yield('title')</title>
  

В блейд-файле

 @section('title') Admin Management @stop