Рейтинг:  0 / 5

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

Использование шаблонов в yii 2

Использование шаблонов

Как было описано в секции Рендеринг в контроллерах, когда вы рендерите вид, вызывая метод [[yii\base\Controller::render()|render()]] из контроллера, к результату рендеринга будет применен шаблон. По умолчанию будет использован шаблон @app/views/layouts/main.php .

Вы можете использовать разные шаблоны, конфигурируя [[yii\base\Application::layout]] или [[yii\base\Controller::layout]]. Первый переопределяет шаблон, который используется по умолчанию всеми контроллерами, а второй переопределяет шаблон в отдельном контроллере. Например, код внизу показывает, как можно сделать так, чтобы контроллер использовал шаблон @app/views/layouts/post.php при рендеринге вида. Другие контроллеры, если их свойство layout не переопределено, все еще будут использовать @app/views/layouts/main.php как шаблон.



namespace app\controllers;

use yii\web\Controller;

class PostController extends Controller
{
    public $layout = 'post';
    
    // ...
}

Для контроллеров, принадлежащих модулю, вы также можете переопределять свойство модуля [[yii\base\Module::layout|layout]], чтобы использовать особый шаблон для этих контроллеров.

Поскольку свойство layout может быть сконфигурировано на разных уровнях приложения (контроллеры, модули, само приложение), Yii определяет какой шаблон использовать для контроллера в два этапа.

На первом этапе определяется значение шаблона и контекстный модуль.

  • Если [[yii\base\Controller::layout]] свойство контроллера отлично от null, используется оно, и [[yii\base\Controller::module|модуль]] контроллера как контекстный модуль.
  • Если [[yii\base\Controller::layout|layout]] равно null (не задано), происходит поиск среди родительских модулей контроллера, включая само приложение (которое по умолчанию является родительским модулем для контроллеров, не принадлежащих модулям) и находится первый модуль, свойство [[yii\base\Module::layout|layout]] которого не равно null . Тогда используется найденное значение layout этого модуля и сам модуль в качестве контекста. Если такой модуль не найден, значит шаблон применен не будет.

На втором этапе определяется сам файл шаблона для рендеринга на основании значения layout и контекстного модуля. Значением layout может быть:

  • Алиас пути (например, @app/views/layouts/main).
  • Абсолютный путь (например /main): значение layout начинается со слеша. Будет искаться шаблон из [[yii\base\Application::layoutPath|папки шаблонов]] приложения, по умолчанию это @app/views/layouts.
  • Относительный путь (например main): Будет искаться шаблон из [[yii\base\Module::layoutPath|папки шаблонов контекстного модуля]], по умолчанию это views/layouts в [[yii\base\Module::basePath|папке модуля]].
  • Булево значение false: шаблон не будет применен.

Если у значения layout нет расширения, будет использовано расширение по умолчанию - .php.

Заберите ссылку на статью к себе, чтобы потом легко её найти ;)

Выберите, то, чем пользуетесь чаще всего:

Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )

Log in to comment

Обсуждение этой статьи

ИНФОРМАЦИЯ: Вы оставите комментарий к этой статье как 'Гость'