A free and open-source book on ZF3 for beginners


4.14. Имена шаблонов представления

Когда вы возвращаете данные с контейнером переменных ViewModel из метода действия вашего контроллера, Zend Framework знает имя соответствующего файла шаблона представления. Например, для метода aboutAction() вашего IndexController'а, ZF3 автоматически использует шаблон представления about.phtml.

ZF3 определяет корректное имя шаблона представления по имени модуля, имени контроллера и имени действия. Например, действие IndexController::aboutAction(), принадлежащее модулю Application будет иметь шаблон представления application/index/about.phtml по умолчанию.

Если название вашего контроллера или действия состоит из нескольких слов в верблюжьем регистре (например, UserRegistrationController и registrationStep1Action), ему будет соответствовать шаблон представления application/user-registration/registration-step-1.phtml (имена в верблюжьем регистре преобразуются в нижний регистр, и слова разделяются дефисами).

4.14.1. Переопределение стандартных имен шаблонов представления

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

Таблица 4.8. Методы класса ViewModel для установки и извлечения имени шаблона представления
Имя метода Описание
setTemplate() Устанавливает имя шаблона представления.
getTemplate() Возвращает имя шаблона представления.

Для установки имени шаблона представления используется метод setTemplate(). Метод getTemplate() возвращает имя шаблона представления, которое в данный момент установлено для модели представления.

Следующий образец кода показывает, как можно вызывать метод setTemplate() из метода indexAction() вашего класса IndexController, чтобы заставить ZF3 использовать файл шаблона представления about.phtml для визуализации главной страницы вместо файла index.phtml.

// Метод для отображения главной страницы вашего сайта.
public function indexAction() 
{    
	// Использовать другой шаблон представления для рендеринга страницы.
	$viewModel = new ViewModel();
	$viewModel->setTemplate('application/index/about');
	return $viewModel;
}

В приведенном отрезке кода мы как обычно создали новый экземпляр класса ViewModel (строка 5). Затем мы вызвали метод setTemplate() для объекта модели представления (строка 6) и передали имя шаблона представления как его аргумент. Имя шаблона представления - это, по сути, относительный путь к файлу about.phtml, но без расширения файла.

Наконец, мы вернули объект модели представления из метода действия (строка 7).

Однако, вызывать метод setTemplate() в каждом методе действия необязательно. Если вы не сделаете этого, ZF3 определит имя шаблона представления автоматически, по текущему имени модуля, имени контроллера и имени метода действия.


Top