Comment obtenir lors de l'exécution, le nom de la route dans Symfony2 lors de l'utilisation de la yaml itinéraires description?
Ici vous pouvez trouver mon n-th question sur Symfony2.
Je travaille avec un la pagination bundle qui utilise le nom de la route prévue dans le routing.yml
fichier.
De mon point de vue, cette approche n'est pas flexible et conduire à une sale de code, car si je change le nom de la route, puis j'ai regarder toutes les templates Twig ou des fichiers PHP pour mettre à jour le nom de la route. C'est ok pour les petites applications Web, mais fournira un bug pour des applications plus importantes et aussi besoin d'un lourd fardeau pour le développeur.
Donc, je me demandais de passer une variable de chaîne x à la Pager
objet fourni par le ci-dessus mentionné bundle. La chaîne x doit être initialisé dans le contrôleur doit fournir la route voulue, nom donné dans le routing.yml
fichier.
Permettez-moi de donner un exemple. Le fichier de routage est la suivante:
//routing.yml
AcmeTestBundle_listall:
pattern: /test/page/{page}
defaults: { _controller: AcmeTestBundle:List:listall, page: 1 }
requirements:
page: \d+
Alors connexes contrôleur est:
//use something....
class ListController extends Controller
{
public function exampleAction($page)
{
$array = range(1, 100);
$adapter = new ArrayAdapter($array);
$pager = new Pager($adapter, array('page' => $page, 'limit' => 25));
return array('pager' => $pager);
}
}
Puis, dans le template twig, le $pager
reçoit le nom de la route qui se réfèrent à l'ensemble ci-dessus
{% if pager.isPaginable %}
{{ paginate(pager, 'AcmeTestBundle_listall') }}
{% endif %}
{% for item in pager.getResults %}
<p>{{ item }}</p>
{% endfor %}
Aucune idée de comment faire pour obtenir le 'AcmeTestBundle_listall' chaîne de valeur lors de l'exécution à l'intérieur du contrôleur?
OriginalL'auteur JeanValjean | 2012-04-27
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
app
variable globale qui est disponible dans twig pour obtenir l'itinéraire actuel de la demande.Plus sur
app
ici et ici.Pour ajouter à cela, si vous avez besoin les paramètres de l'itinéraire, de l'utilisation de l'app.demande.get('_route_params')
Symfony stocke le nom de la route comme un attribut de la Demande, de sorte qu'il devrait mieux être récupérées en tant que tel:
app.request.attributes.get('_route')
. Évitez d'utiliser leRequest::get()
méthode, car il tente d'abord de récupérer le paramètre de la requête de paramètre sac - les attributs sac est seulement utilisé comme une solution de repli. Cela dit, à l'aide deRequest::get()
, un utilisateur peut remplacer_route
en ajoutant?_route=my_tainted_param
à l'URL.OriginalL'auteur Amit