por pasar parametros url symfony parameters routing query-string

parametros - Symfony2: ¿Cómo pasar los parámetros de la cadena de consulta de url a los controladores?



pasar parametros por url html (2)

Tal vez me esté faltando algo, pero no parece haber una manera de definir los parámetros de la cadena de consulta en las rutas en Symfony2 para que puedan pasar a un controlador.

Por ejemplo, en lugar de generar un URI como /blog/my-blog-post (de la documentación de enrutamiento de Symfony2) y pasarlo a la siguiente ruta:

# app/config/routing.yml blog_show: pattern: /blog/{slug} defaults: { _controller: AcmeBlogBundle:Blog:show }

Preferiría generar un URI como /blog?slug=my-blog-post . El problema es que no puedo encontrar ningún lugar para definir el parámetro slug en el archivo de configuración de ruta (como su contraparte {slug} anterior).

Quizás esto sea a propósito, pero ¿cuál es la mejor práctica para trabajar con parámetros GET en la cadena de consulta?

La documentación hace mención de ellos en Generar URLs con cadenas de consulta , entonces, ¿cómo pasarlos al controlador?

Donde puedo encontrar mención de ellos es Symfony2 y HTTP Fundamentals :

use Symfony/Component/HttpFoundation/Request; $request = Request::createFromGlobals(); // retrieve GET variables $request->query->get(''foo'');

¿Es esta la mejor práctica para trabajar con ellos dentro del controlador?


No puede especificar sus parámetros de cadena de consulta en los archivos de configuración de enrutamiento. Solo los obtiene del objeto $ request en su controlador: $request->query->get(''foo''); (Será null si no existe).

Y para generar una ruta con un parámetro dado, puedes hacerlo en tus plantillas de ramitas como esa:

{{ path(route, query|merge({''page'': 1})) }}

Si desea generar una ruta en su controlador, es como en la documentación que vinculó:

$router->generate(''blog'', array(''page'' => 2, ''category'' => ''Symfony''));

generará la ruta /blog/2?category=Symfony (los parámetros que no existen en la definición de ruta se pasarán como cadenas de consulta).


Para trabajar con los parámetros GET / POST en un controlador que extiende Symfony / Bundle / FrameworkBundle / Controller / Controller:

public function updateAction() { $request = $this->getRequest(); $request->query->get(''myParam''); // get a $_GET parameter $request->request->get(''myParam''); // get a $_POST parameter ... }

Para un controlador que no extienda el controlador base de Symfony, declare el objeto de solicitud como un parámetro del método de acción y proceda como se indica arriba:

public function updateAction(Request $request) { $request->query->get(''myParam''); // get a $_GET parameter $request->request->get(''myParam''); // get a $_POST parameter ... }