Laravel: Как найти правильный мастер-шаблон блейда?

Чтобы расширить шаблон блейда, вы должны написать

@extends('folder.template_name')

Это работает для стандартной установки.

Я создал модуль для серверной части, и теперь я не могу использовать свой шаблон модуля, потому что Laravel перехватывает первую запись, а это стандартная папка просмотра.

Моя структура выглядит так:

app
-- modules
-- modules\backend
-- modules\backend\views
-- modules\backend\views\layouts\master.blade.php
-- views
-- views\layouts\master.blade.php

Итак, когда я нахожусь в бэкэнде и пытаюсь отобразить свой шаблон:

// app\modules\backend\views\page\index.blade.php
@extends('layouts.master')

Laravel отображает app\views\layouts\master.blade.php вместо app\modules\backend\views\layouts\master.blade.php

Я пробовал много имен внутри этого @extends, например.

@extends('app\modules\backend\views\layouts\master')
@extends('app.modules.backend.views.layouts.master')
@extends(base_path(). '\app\modules\backend\views\\' . 'layouts.master')

Ничего не работает.


person Timo.Klement    schedule 09.09.2013    source источник


Ответы (2)


При использовании пакета или автоматически загружаемого модуля обращение к его ресурсам осуществляется с использованием нотации с двойным двоеточием. В вашем случае для доступа к основному шаблону модуля вам необходимо использовать

@extends('backend::layouts.master') 

Эти соглашения описаны в документах, для получения дополнительной информации см.

Соглашения о пакетах Laravel 4

person Gadoma    schedule 09.09.2013
comment
Это решение. Оно работает!!! Скажите, пожалуйста, где я могу найти больше об этом? Есть ли у вас какие-либо источники об этом? - person Timo.Klement; 10.09.2013
comment
это обозначение, которое вы используете в других местах (View::make , Config::get и т. д.), чтобы обозначить, что вы ссылаетесь на пакет или модуль, поэтому я подумал, что это может сработать и для вашего случая. Я не уверен, что эта информация указана где-нибудь в документации... - person Gadoma; 10.09.2013
comment
Я вижу, что он уже обновлен в документах, я отредактировал свой ответ, чтобы включить это. - person Gadoma; 10.09.2013

Убедитесь, что в файле /app/config/view.php есть путь, по которому находятся эти представления.

I.E.

'paths' => array(__DIR__.'/../views'),

To

'paths' => array(
    __DIR__.'/../views',
    __DIR__.'/../modules/backend/views'
),

или что-то, что представляет ваш фактический путь.

Отсюда вы можете захотеть изучить загрузку папки представления с помощью другого механизма, если ваши представления находятся в динамически генерируемых папках. Может быть, событие module::boot, которое добавляет путь к модулю в массив путей просмотра? Просто идея.

person Abba Bryant    schedule 09.09.2013