Первое, что нужно понять, это то, что по умолчанию дизайн не должен устанавливать заголовок страницы из файла представления.На самом деле уже слишком поздно.Контроллер отображает ваш окончательный HTML-код из двух частей: он помещает представление в макет.В файле макета по умолчанию задается заголовок страницы с помощью $title_for_layout
.
. Взгляните на торт / libs / view / layouts / default.ctp.В <head>
вы увидите это, что объясняет то, что вы уже описали
<title>
<?php __('CakePHP: the rapid development php framework:'); ?>
<?php echo $title_for_layout; ?>
</title>
Поскольку контроллер - это то место, где вы устанавливаете свои viewVars, $this->set("title_for_layout","Temp Temp Temp");
работает только в контроллере.Он ничего не делает в файле представления или макета (как вы документально задаете в своем вопросе).
У вас может быть веская причина для пропуска макета и использования одного статического файла .ctp представления.Для этого установите переменную autoLayout в false на вашем контроллере.Вы можете установить это для всего Контроллера точно так же, как вы устанавливаете имя, переменные и т. Д. Переменные: var $autoLayout = false;
или для метода по методу с помощью $this->autoLayout = false;
.
Теперь Cake отображает только ваш .ctp файл представления без оболочки макета.Все viewVars все еще доступны, так что вы можете использовать $ title_for_layout, если хотите, в противном случае жестко закодировать заголовок.В любом случае вам нужно включить свой собственный код <head>
/ <title>
в верхней части файла представления .ctp, поскольку он больше не включается в макет.