Представление Laravel: создать проблему с дочерним представлением

Извините, если это является исправлением. Я новичок в Laravel и, честно говоря, моя игра с макетами очень слабая. Вот ситуация. У меня есть мастер-макет в app.blade.php. Это прекрасно работает. Затем я вынул содержимое страницы приветствия и поместил его в отдельное представление как welcome.blade.php, которое я вызываю из @yield. Работает отлично. Однако этот приветственный файл все еще очень длинный, и я хотел бы разбить его на разделы и включить отдельные представления для каждого раздела. В мире, отличном от Laravel, это было бы так же просто, как

<?php include('firstsection.php'); ?>

Не так много в Laravel, и после долгих поисков и возни я чувствую, что ухожу дальше от правильного ответа. Что я сделал, так это разбил этот первый раздел как firstsection.blade.php и поместил этот файл в папку представлений папки ресурсов. Затем я пытаюсь вызвать это с помощью

<?php echo View::make('view.firstection') ?>

Это и несколько других версий этого, таких как добавление .blade.php к имени представления, все дают мне ошибки View Not Found. Я просмотрел здесь массу вопросов, и я думаю, что ответ просто потерян для меня. Кто-нибудь может дать совет?


person Blind Fish    schedule 13.01.2016    source источник


Ответы (1)


Здесь вам нужна директива @include для включения частей вашего макета. Итак, в вашем шаблоне Blade вы можете сделать:

@include('firstsection')

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

Вы можете прочитать больше на странице Структуры управления - Включая подвиды раздел

ИЗМЕНИТЬ

Все представления по умолчанию относятся к каталогу resources/views по умолчанию,

Если у вас есть файл resources/views/test.blade.php, чтобы включить его, вы просто используете

@include('test')

и когда у вас есть файл resources/views/search/test.blade.php, чтобы включить его, вы должны использовать:

@include('search.test')

Вы используете здесь . как разделитель каталогов

person Marcin Nabiałek    schedule 13.01.2016
comment
Я читал этот раздел несколько раз и изначально пробовал это как @include, но не смог заставить его работать. Возможно, я слишком много думаю об этом или был отброшен общим, поскольку это, казалось, подразумевало, что мне нужно было создать либо папку в ресурсах\представлениях с именем shared и поместить туда представление, либо этот общий ресурс был совершенно другой структурой от Посмотреть. - person Blind Fish; 13.01.2016
comment
Неа. Та же ошибка. В частности, View [view.firstsection] не найден. (Просмотр: /home/me/web/site/resources/views/welcome.blade.php). Кажется, мне нужно создать это представление либо в контроллере, либо с помощью функции View:make в шаблоне, нет? И я не хочу создавать представление внутри контроллера, так как есть некоторые, которым я также буду передавать данные. - person Blind Fish; 13.01.2016
comment
Предположим, у вас есть app.blade.php в папке resources/views. Теперь вы можете создать еще один файл в этом каталоге, скажем, test.blade.php, и теперь в свой app.blade.php вы можете включить его, используя @include('test') - person Marcin Nabiałek; 14.01.2016
comment
ТОТ!!! Я почти хочу, чтобы вы опубликовали это как отдельный ответ вместе с объяснением того, почему «представление». не нужен, даже если это так во всех документах. Но как бы то ни было, я отмечу, что это решено, и надеюсь, что если кто-то еще наткнется на это, они прочитают эти комментарии. Спасибо, сэр. - person Blind Fish; 14.01.2016
comment
@BlindFish Я обновил свой ответ, чтобы сделать его более понятным для всех - person Marcin Nabiałek; 14.01.2016