Установить заголовок страницы в статическом представлении страницы - PullRequest
3 голосов
/ 14 января 2011

Я использую CakePHP 1.3

У меня есть статическая страница с именем temp.ctp, расположенная по адресу app/views/pages/temp.ctp.

Это доступно с моего сайта, как: localhost/pages/temp

Я пытаюсь установить заголовок страницы из представления.

Я попытался поместить каждое из следующего в файл temp.ctp:

<?php $this->set("title_for_layout","Temp Temp Temp"); ?>

и

<? $this->pageTitle = 'Temp Temp Temp'; ?>

Весь файл выглядит так:

<?php $this->set("title_for_layout","Temp Temp Temp"); ?>


Hello World temp

И использует значение по умолчанию layout (для верхнего и нижнего колонтитула), которое поставляется с cakephp 1.3.

Ни один из которых не сработал. Как правильно это сделать?

Ответы [ 2 ]

4 голосов
/ 14 января 2011

В соответствии с темой в CakePHP Google Group, должно быть возможно использовать $this->set("title_for_layout","Temp"); прямо в вашем представлении - в CakePHP 1.3, то есть 1.2 использует this->pageTitle = "Temp";

Согласно заявке, контроллер страниц по-прежнему использует $ title вместо $ title_for_layout, поэтому попробуйте:

$this->set("title","Temp");

http://cakephp.lighthouseapp.com/projects/42648/tickets/511-pages-controller-needs-updating-for-title_for_layout

0 голосов
/ 17 января 2011

Первое, что нужно понять, это то, что по умолчанию дизайн не должен устанавливать заголовок страницы из файла представления.На самом деле уже слишком поздно.Контроллер отображает ваш окончательный 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, поскольку он больше не включается в макет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...