$ this- & gt; set ('titre', 'Nom du titre'); ne fonctionne pas dans CakePHP 3.x
Essentiellement en défaut.ctp j'ai pour mon titre:
<title>
<?= $this->fetch('title') ?>
</title>
Et à l'intérieur de la manette, j'ai cette ligne:
$this->set('title', 'Test-Title');
Mais il ne fait rien, il s'affiche toujours les contrôleurs de nom(les Travaux, les contrôleurs nom complet os JobsController.ctp)
Mais si je mets ceci à l'intérieur de mon fichier de vue:
$this->assign('title', 'Test-Title');
Il change le titre. Alors quel est le problème avec $this->set('titre', $titre) ?
source d'informationauteur Tachi
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement
set()
la variable dans votre contrôleur:Ensuite l'utiliser comme une variable standard est à votre disposition ou de la vue:
Plus de détails ici: http://book.cakephp.org/3.0/en/views.html#setting-view-variables
À l'aide de
assign()
est différent, c'est pourquoi il travaille avecfetch()
.assign()
est utilisé avec Vue Blocs: http://book.cakephp.org/3.0/en/views.html#using-view-blocksfetch()
retourne le contenu d'un bloc non une variable. À l'aide deset()
dans votre Contrôleur est la définition d'une variable qui peut être sortie de votre point de Vue des modèles en se faisant l'écho de la variable:-Si vous souhaitez utiliser
fetch()
vous avez besoin de l'utiliser en combinaison avecassign()
dans les modèles d'Affichage pour définir le bloc. Par exemple, à votre avis, l'utilisation du modèle:-Puis, dans le modèle de mise en page:-
Dans CakePHP 3 l'idée est de définir le titre de la page en l'affectant dans l'avis qu'il porte sur le rendu de la page. Cela diffère de la façon dont cela a été initialement traitée dans CakePHP 2 où vous auriez définir
title_for_layout
dans votre controller, puis l'écho de la$title_for_layout
variable dans le modèle de mise en page (ce qui a été dépréciée en faveur de la CakePHP 3 approche dans les versions ultérieures de Gâteau 2).Juste pour la fin, je suis tombé sur une situation où un mal formé .js script avec des variables non définies référencés entre
<head></head>
a abouti à la<title></title>
étiquettes affichées à DOM (montré dans la source de la page) mais Chrome, Firefox et (de mémoire) MSIE tous pas réussi à transmettre le contenu de la propriété de l'INTERFACE utilisateur de l'APPLICATION, de nouveau à partir de la mémoire - iOS mobile a pas été affectée.Si vous voulez vous en tenir à votre code, après la définition de "titre" variable de simplement écrire ceci:
J'ai fait de cette, de cette façon dans
default.ctp
Dans mon fichier de vue, je l'ai fait.