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?

Était-ce utile?

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 }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top