Come passare l'array come parametro all'azione del controller utilizzando Symfony 2? Potresti scrivere un esempio su come definire il percorso, che contiene un array di lunghezza sconosciuta come parametro. Per esempio url: http://localhost:8000/blog/post/?tags=[tag1,tag2,tag3] dove il numero di tag varia da 0 a 100. Anche il controller di esempio per questa rotta, dove l'azione restituisce i valori della matrice di tag.Symfony2, Come passare l'array come parametro all'azione del controller?
Utilizzando il seguente codifica (vedi routing.yml e controller.php sotto) sto ottenendo l'errore:
Catchable Fatal Error: Argument 3 passed to Symfony\Component\Routing\Route::__construct() must be of the type array, string given, called in C:\Bitnami\wampstack-5.5.30-0\sym_prog\dctr\vendor\symfony\symfony\src\Symfony\Component\Routing\Loader\YamlFileLoader.php on line 147 and defined in C:\Bitnami\wampstack-5.5.30-0\sym_prog\dctr\app/config\routing.yml (which is being imported from "C:\Bitnami\wampstack-5.5.30-0\sym_prog\dctr\app/config/routing_dev.yml").
url:
http://localhost:8000/blog/post/tag1
http://localhost:8000/blog/post/tag1/tag2/tag3/tag4
http://localhost:8000/blog/post/?tags=[tag1,tag2]
Qui di seguito sono diverse combinazioni di file di routing e di controller ho provato finora:
// versione R1, routing.yml
blog_post_tags:
path: blog/post/{tags}
defaults: { _controller: DefaultController:list_postsByTagActionQ }
requirements:
tags : "[a-zA-Z0-9,]+"
// versione R2, routing.yml
blog_post_tags:
resource: "@BlogBundle/Controller/"
type: annotation
prefix: /blog/
defaults: { _controller: DefaultController:list_postsByTagActionQ }
// versione R1,2-c1, controller.php
//http://localhost:8000/blog/post/?tags=[tag1,tag2] .
/**
* @Route("/posts/{tags}")
* @Template()
*/
public function list_postsByTagAction($tags){
var_dump($tags);
return array('posts'=>['post1','post2']);
}
// versione R1,2-c2, controller.php
//url http://localhost:8000/blog/post/?tags=[tag1,tag2]
/**
* @Route("/posts/{tags}")
* @Method("GET")
* @Template()
*/
public function list_postsByTagActionQ1(Request $request){
$tags=$request->query->get('tags'); // get a $_GET parameter
var_dump($tags);
return array('posts'=>['post1','post2']);
}
// versione R1,2-c3, controller.php
//url http://localhost:8000/blog/post/?tags=[tag1,tag2]
/**
* @Route("/posts/{tags}")
* @Method("GET")
* @Template()
*/
public function list_postsByTagActionQ3(Request $request, $tags){
var_dump($tags);
return array('posts'=>['post1','post2']);
}
// versione r3, routing.yml
blog_post_tags:
path: blog/post/{tags}
defaults: { _controller: DefaultController:list_postsByTagActionQ }
// versione r3-C4, controller.php
//url http://localhost:8000/blog/post/?tags=[tag1,tag2]
public function list_postsByTagActionQ(Request $request){
$tags=$request->query->get('tags'); // get a $_GET parameter
var_dump($tags);
}
aspetto questo http://stackoverflow.com/a/15545813/5397119 –
ho bisogno esempio con routing.yml e controller.php – olga
valori, non dei parametri nella mia interrogazione costituisce una matrice – olga