Intereting Posts
Как вставить несколько записей в одну поездку в базу данных с использованием PDO? Использование Zend Framework для проектов с высокой нагрузкой Выключить или обработать ошибки в рабочей среде? Как изменить WooCommerce Добавить в корзину Кнопка на основе доступности Выполнить командную строку через php? Сделать изображение (изображение на изображение) определенной шириной, но неограниченной длиной? Реализация фасада перед классом Factory Laravel 5.4 Можете ли вы добавить инструкцию if в ORDER BY? Ручное преобразование ответа XML SOAP в массив PHP Неправильно ли исключать исключения для возврата ошибок сервера, например. 404 Страница не найдена? Используйте результаты DB для заполнения 1-го dropmenu и 1-го значения dropmenu для заполнения 2-го Специальные символы в PHP / MySQL Как показать магазины с ближайшими длинными / латами с помощью функции поиска – Laravel 5 eloquent Как я могу создать объект DOM из HTML-файла на языке php? Нет следующего набора результатов. Пожалуйста, вызовите mysqli_more_results () / mysqli :: more_results (), чтобы проверить, следует ли вызывать эту функцию / метод

$ this-> set ('title', 'Title Name'); не работает в CakePHP 3.x

В основном в default.ctp У меня есть это для моего названия:

<title> <?= $this->fetch('title') ?> </title> 

И внутри контроллера у меня есть эта строка:

 $this->set('title', 'Test-Title'); 

Но он ничего не делает, он все еще отображает имя контроллеров (Джобс, полное имя контроллеров os JobsController.ctp)

Но если я поместил это внутри моего файла вида:

 $this->assign('title', 'Test-Title'); 

Он меняет название. Итак, что случилось с $ this-> set ('title', $ title) ?

Related of "$ this-> set ('title', 'Title Name'); не работает в CakePHP 3.x"

Вы можете просто set() переменную в вашем контроллере:

 // View or Controller $this->set('title', 'Test-title'); 

Затем используйте его как стандартную переменную в вашем макете или представлении:

 <!-- Layout or View --> <title> <?php echo $title; ?> </title> 

Подробности здесь: http://book.cakephp.org/3.0/ru/views.html#setting-view-variables

Использование функции assign() отличается, поэтому он работает с fetch() . assign() используется с блоками просмотра: http://book.cakephp.org/3.0/en/views.html#using-view-blocks

fetch() возвращает содержимое блока, а не переменную. С помощью set() в вашем контроллере set() переменная, которая может выводиться в шаблонах View, повторяя эту переменную:

 <?php echo $title; ?> 

Если вы хотите использовать fetch() вам нужно использовать его в сочетании с assign() в шаблонах View, чтобы определить блок. Например, в вашем шаблоне просмотра используйте: –

 <?php $this->assign('title', $title); ?> 

А затем в шаблоне макета: –

 <title><?php echo $this->fetch('title'); ?></title> 

В CakePHP 3 идея состоит в том, чтобы установить заголовок страницы, назначив его в представлении, относящемся к рендерингу страницы. Это отличается от того, как это было изначально обработано в CakePHP 2, где вы определяете title_for_layout в своем контроллере, а затем эхо-переменную $title_for_layout в шаблоне макета (это было устарело в пользу подхода CakePHP 3 в более поздних версиях Cake 2).

Просто для завершения, я столкнулся с ситуацией, когда неправильный сценарий .js с неопределенными переменными, на которые ссылается между <head></head> приводит к тому, что теги <title></title> отправляются в DOM (показаны в источнике страницы), но Chrome , Firefox и (из памяти) MSIE все не удалось доставить содержание заголовка в пользовательский интерфейс APP, снова из памяти – iOS mobile не был затронут.