symfony button_to passer le paramètre
-
28-10-2019 - |
Question
J'ai un composant button_to dans Symfony 1.4, qui appelle une route qui reçoit un paramètre (un slug).Mais je ne parviens pas à faire reconnaître à Symfony le paramètre que j'envoie.J'ai essayé la même chose avec un link_to et cela fonctionne très bien.
Voici mon code:
routing.yml
entry_show:
url: /entry/:slug
class: sfDoctrineRoute
options:
model: ProjectEntry
type: object
method: getEntryBySlug
param: { module: entry, action: show }
modèle:
<?php echo button_to('ButtonName', 'entry_show', array('slug' => 'this-is-my-slug')) ?>
Modèle d'entrée:
public function getEntryBySlug($parameters)
{
return $this->findOneBySlug($parameters['slug']);
}
Tout ce que j'obtiens, c'est l'erreur 500 suivante:
La route "/ entry /: slug" a des paramètres obligatoires manquants (: slug).
J'ai également essayé de changer le code du modèle avec:
<?php echo button_to('ButtonName', 'entry_show?' . 'slug='.'this-is-my-slug') ?>
mais en vain ...
des idées?
La solution
Essayez ceci:
<?php echo button_to('ButtonName', '@entry_show?slug=this-is-my-slug') ?>
Vous avez besoin du symbole @ pour se lier à une route nommée dans la configuration de routage, et le paramètre slug
fait partie de l'argument URI, pas le 3ème argument de la fonction button_to
.
Autres conseils
Avez-vous essayé de définir une valeur par défaut pour votre paramètre slug?
Tels que
param: { module: entry, action: show, slug: default-slug }