Forse mi manca qualcosa ma non sembra esserci un modo per definire i parametri della querystring nei percorsi in Symfony2 in modo che possano essere passati in un controller.Symfony2: come passare i parametri url querystring ai controller?
Per esempio, invece di generare un URI come /blog/my-blog-post
(da Symfony2 di routing documentation) e passando al seguente percorso:
# app/config/routing.yml
blog_show:
pattern: /blog/{slug}
defaults: { _controller: AcmeBlogBundle:Blog:show }
io preferirei di generare un URI come /blog?slug=my-blog-post
. Il problema è che non riesco a trovare da nessuna parte per definire il parametro slug
nel file di configurazione del percorso (come la sua controparte {slug} sopra).
Forse questo è di proposito, ma qual è la procedura migliore per lavorare con i parametri GET nella querystring?
La documentazione ne fa menzione nello Generating URLs with Query Strings, quindi come passarli nel controller?
Dove posso trovare menzione di loro è Symfony2 and HTTP Fundamentals:
use Symfony\Component\HttpFoundation\Request;
$request = Request::createFromGlobals();
// retrieve GET variables
$request->query->get('foo');
È questo la prassi migliore per lavorare con loro all'interno del controllore?
Da Symfony 2.4, il metodo 'getRequest()' non è w deprecato e si dovrebbe usare il secondo trucco, con il parametro 'Request' nel metodo controller. il metodo 'getRequest()' sarà rimosso in Symfony 3. – Brewal
@Brewal: ma se hai un 'Controller' che estende' Symfony \ Bundle \ FrameworkBundle \ Controller \ Controller' e che ha già parametri come definiti nella sua rotta, puoi ancora ottenere la richiesta in questo modo o devi semplicemente usare 'Request :: createFromGlobals()' adesso? – fritzmg
È ancora possibile ottenere la richiesta grazie al tipo 'Richiesta' specificato poco prima della variabile' $ request'. Symfony è abbastanza intelligente da indovinarlo. – Brewal