Bonsoir!
alors voila j'aurai plusieurs questions à vous poser à propos de l'url rewriting de CakePHP.
J'affiche des articles avec en bas de page un formulaire pour ajouter un commentaire. Lorsque ce dernier n'est pas correctement rempli, il me renvoie sur la page avec les erreurs. Seulement le routage de CakePHP ne fonctionne pas dans les deux sens.
J'ai déjà créé le router:: connect suivant :
Router::connect('/blog/:slug', array('controller' => 'posts', 'action' => 'show'), array('pass' => array('slug'), 'slug' => '[a-z0-9-]+'));
ce qui fait que quand je tape monsite.fr/blog/mon-slug, je récupère bien le résultat de la requête sur le controller et l'action demandé.
Comment réussir à faire l'effet inverse? C'est à dire que si j'entre en url : monsite.fr/posts/show/mon-slug, mon url rewriting s'active pour recréer monsite.fr/blog/mon-slug?
Dois je aller taper dans le .htaccess? Ou bien directement créer mon lien avant l'envoi de mon formulaire?
Merci d'avance pour vos réponses.
Salut,
Pour ma part, je fais un this->redirect($this->referer()) pour qu'il appelle la page qui a appelé l'action en cours, après je ne sais pas si sa répond vraiment à ta demande
Je ne vois pas en quoi ça poserai un soucis niveau SEO, le routing est justement là pour l'améliorer.
Le problème en utilisant le $this->redirect($this->referer()) est que je perds mon array avec les erreurs de validation. J'ai utilisé le tutoriel sur les commentaires en CakePHP du site.
Ok, je comprends
J'ai jamais utilisé mais sur la doc j'ai trouvé ceci
Displaying and checking errors
FormHelper::error(string $fieldName, mixed $text, array $options)
Shows a validation error message, specified by $text, for the given field, in the event that a validation error has occurred.
Options:
‘escape’ bool Whether or not to html escape the contents of the error.
‘wrap’ mixed Whether or not the error message should be wrapped in a div. If a string, will be used as the HTML tag to use.
‘class’ string The classname for the error message
FormHelper::isFieldError(string $fieldName)
Returns true if the supplied $fieldName has an active validation error.:
<?php
if ($this->Form->isFieldError('gender')) {
echo $this->Form->error('gender');
}
Note
When using FormHelper::input(), errors are rendered by default.
Je pense que tu devrai pouvoir t'en sortir avec ça
Dans ta vue
if($this->Form->isFieldError(Comment.nomDeTonChamps)
echo $this->Form->error(Comment.nomDeTonChamps,'messageErreur',$optionsSiTuAs);
Après je ne sais pas si le message peut être récupéré sur ton model, normalement je dirai que oui.