¿Cómo puedo configurar el title_for_layout en el PagesController defecto?
-
26-09-2019 - |
Pregunta
No puedo conjunto title_for_layout
en el PagesController que viene por defecto con CakePHP 1.3.
Estoy utilizando el siguiente código en la función de visualización:
$this->set('title_for_layout','some title');
¿Qué estoy haciendo mal?
Solución
En el controlador, el valor correspondiente es $this->pageTitle
.
Actualizar
Vaya, como se señaló en los comentarios, esta es la solución 1,2. 1.3 posibilidades (después de hacer algunas investigaciones) incluyen:
- Asegurar que
$title_for_layout
tiene su eco en el diseño - Colocar el código
$this->set()
en la vista en lugar de en el controlador
Otros consejos
Si desea imitar el comportamiento de la torta 1.2, puede hacer lo siguiente:
En su app_controller, crear el siguiente método:
en app / app_controller.php (puede que tenga que crear este archivo si no lo ha hecho)
public $pageTitle;
public function beforeRender() {
$this->set('title_for_layout', $this->pageTitle);
}
A continuación, en cualquiera de sus métodos de acción, que puede entonces utilizar el pageTitle como lo haría en 1.2.
public function index() {
$this->pageTitle = 'Some Title';
}
El BeforeRender () método será llamado después de que sus controladores tienen procesamiento final, pero antes de la disposición que se queden, lo que le permite tanto a las variables establecidas para el diseño.
En el método de acción, intente lo siguiente:
function index()
{
$this->pageTitle= 'Your Title';
}
Al igual que me gustaría añadir a cualquier persona nueva búsqueda de esta solución, que puede hacer $this->set('title', $title);
en CakePHP 1.3 dentro del controlador y el título se procesará automáticamente.
Puede utilizar:
$this->assign('title', 'Some title');
y en la CTP:
<title><?= $this->fetch('title'); ?></title>
trabajar en CakePHP 3.0
Para CakePHP 3.x,
Puede seguir los consejos aquí
En esencia,
Dentro de UsersController.php
:
$this->set('title', 'Login');
Dentro de src/Template/Layouts/default.ctp
encima de la $this->fetch('title');
escritura:
if (isset($title)) {
$this->assign('title', $title);
}
Uso beforeRender()
lugar. Poner el siguiente en AppController:
class AppController extends Controller {
var $content;
function beforeRender() {
$this->set('content',$this->content);
}
}
Y en el controlador, sólo se puede hacer:
function index() {
$this->content['title'] = '123'; }
Eso va a hacer el truco.