Comment puis-je régler la title_for_layout dans le PagesController par défaut?

StackOverflow https://stackoverflow.com/questions/2628963

  •  26-09-2019
  •  | 
  •  

Question

Je ne peux pas définir title_for_layout dans le PagesController qui vient par défaut avec CakePHP 1.3.

Je suis en utilisant le code suivant dans la fonction d'affichage:

$this->set('title_for_layout','some title');

Qu'est-ce que je fais mal?

Était-ce utile?

La solution

Dans votre contrôleur, la valeur correspondante est $this->pageTitle.

UPDATE

Oops, comme il est indiqué dans les commentaires, c'est la solution 1.2. 1.3 possibilités (après avoir fait quelques recherches) comprennent:

  1. Veiller à ce que $title_for_layout est reprise dans la mise en page
  2. Mise en place du code $this->set() dans la vue plutôt que dans le contrôleur

Autres conseils

Si vous souhaitez imiter le comportement de gâteau 1.2, vous pouvez faire ce qui suit:

Dans votre app_controller, créez la méthode suivante:

app / app_controller.php (vous devrez peut-être créer ce fichier si vous avez pas déjà)

public $pageTitle;

public function beforeRender() {
    $this->set('title_for_layout', $this->pageTitle);
}

Ensuite, dans l'une de vos méthodes d'action, vous pouvez alors utiliser le pageTitle comme vous le feriez dans 1.2.

public function index() {
    $this->pageTitle = 'Some Title';
}

La méthode beforeRender () sera appelé après vos contrôleurs ont terminé le traitement, mais avant la mise en page étant rendu, vous permettant ainsi de variables définies pour la mise en page.

Dans la méthode d'action, essayez ceci:

function index()
{
    $this->pageTitle= 'Your Title';
}

Juste pensé que j'ajouter à tout nouveau les gens à trouver cette solution, vous pouvez le faire $this->set('title', $title); dans CakePHP 1.3 à l'intérieur du contrôleur et le titre sera rendu automatiquement.

Vous pouvez utiliser:

$this->assign('title', 'Some title');

et ctp:

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

Il fonctionne dans CakePHP 3.0

Pour 3.x CakePHP,

vous pouvez suivre les conseils

Pour l'essentiel,

UsersController.php Intérieur:

$this->set('title', 'Login');

src/Template/Layouts/default.ctp intérieur

au-dessus du $this->fetch('title');

écriture:

if (isset($title)) {
    $this->assign('title', $title); 
}

Utilisez beforeRender() à la place. Mettez ce qui suit dans AppController:

class AppController extends Controller {
    var $content;

    function beforeRender() {
        $this->set('content',$this->content);
    }            
}

Et dans le contrôleur, vous pouvez simplement faire:

function index() {
    $this->content['title'] = '123'; }

Ça va faire l'affaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top