Symfony2: Comment passer url querystring paramètres des contrôleurs?
Peut-être que je manque quelque chose, mais il ne semble pas être un moyen de définir des paramètres de chaîne de requête dans les routes dans Symfony2, de sorte qu'ils peuvent être passés dans un contrôleur.
Par exemple, au lieu de générer un URI comme /blog/my-blog-post
(à partir de Symfony2 le routage de la documentation) et en passant à la route suivante:
# app/config/routing.yml
blog_show:
pattern: /blog/{slug}
defaults: { _controller: AcmeBlogBundle:Blog:show }
Je préfère générer un URI comme /blog?slug=my-blog-post
. Le problème est que je ne peux pas trouver n'importe où pour définir la slug
paramètre dans le parcours du fichier de configuration (à l'instar de ses {slug} homologue ci-dessus).
C'est peut-être sur le but, mais alors quelle est la meilleure pratique pour travailler avec des paramètres GET dans la querystring?
La documentation ne font mention d'eux dans Générer des URLs avec des Chaînes de Requête, alors, comment les faire passer dans le contrôleur?
Où je peux trouver la mention d'entre eux est Fondamentaux de Symfony2 et HTTP:
use Symfony\Component\HttpFoundation\Request;
$request = Request::createFromGlobals();
//retrieve GET variables
$request->query->get('foo');
Est-ce la meilleure pratique pour travailler avec eux à l'intérieur du contrôleur?
Vous devez vous connecter pour publier un commentaire.
De travailler avec GET /POST des paramètres d'un contrôleur qui s'étend de Symfony\Bundle\FrameworkBundle\Controller\Controller:
Pour un contrôleur qui ne s'étend pas Symfony contrôleur de base, déclarer la demande de l'objet en tant que paramètre de la méthode d'action et procéder comme ci-dessus:
getRequest()
méthode est maintenant obsolète et il faut utiliser le deuxième tour, avec leRequest
paramètre dans la méthode de contrôleur. legetRequest()
méthode sera supprimée dans Symfony 3.Controller
qui s'étendSymfony\Bundle\FrameworkBundle\Controller\Controller
et qui fait déjà l'paramètres définis dans son itinéraire, pouvez-vous encore vous bénéficiez également de la Demande de cette façon, ou avez-vous tout simplement à utiliserRequest::createFromGlobals()
maintenant?Request
type spécifié juste avant la$request
variable. Symfony est assez intelligent pour deviner que.Vous ne pouvez pas spécifier vos paramètres de chaîne de requête dans la configuration de routage de fichiers.
Vous venez d'obtenir de l' $objet de demande dans votre contrôleur:
$request->query->get('foo');
(seranull
si elle n'existe pas).Et de générer un itinéraire avec un paramètre donné, vous pouvez le faire en vous les templates twig comme ça :
Si vous souhaitez générer un itinéraire dans votre contrôleur, c'est comme dans la documentation que vous avez lié:
va générer la route
/blog/2?category=Symfony
(les paramètres qui n'existent pas dans la définition de la route sera passé comme les chaînes de requête).