Sovetkali
@Sovetkali
Инженер по тестированию ПО

Почему Blade странно работает?

Добрый день. Объясните дураку.

Есть роут:
Route::get('/', function () {return view('index'); });


Вьюшка имеет такой код:
<html>
<head></head>
<body>
    @yield('form')
</body>
</html>


Есть вьюшка form.blade.php:
@extends('index')
<p>Привет</p>


Вопрос, почему в index ничего не выводится?
Правильно ли я понимаю, что yield указывает, какая вью будет выводится на его месте?
@extends указывает какую вьюшку надо расширить?

Если сделать иначе, т.е. в код index поместить код form, а в form код index, то все выводится.
У меня мозг ломается.
  • Вопрос задан
  • 427 просмотров
Пригласить эксперта
Ответы на вопрос 1
Henryh
@Henryh
Веб-программист
Исходя из вашей логики, работать будет такой код:
Route::get('/', function () {return view('form'); });

index.blade.php:
<html>
<head></head>
<body>
    @yield('form')
</body>
</html>

form.blade.php:
@extends('index')
@section('form')
<p>Привет</p>
@endsection


Но это структурно неверно! Так как во-первых шаблон будет использоваться не только для страницы index, но и для все остальных страниц на сайте, а в вторых внутри body будет выводиться не только форма но и содержимое других страниц. Верно будет так:
Route::get('/form', function () {return view('form'); });

layouts/app.blade.php:
<html>
<head></head>
<body>
    @yield('content')
</body>
</html>

form.blade.php:
@extends('layouts.app')
@section('content')
<p>Привет</p>
@endsection
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы