Wie man Array als Parameter an Controller-Aktion mit Symfony 2 übergeben? Könnten Sie bitte ein Beispiel schreiben, wie man eine Route definiert, die ein Array unbekannter Länge als Parameter enthält. Zum Beispiel url: http://localhost:8000/blog/post/?tags=[tag1,tag2,tag3], wobei die Anzahl der Tags von 0 bis 100 variiert. Auch Beispiel-Controller für diese Route, wobei Aktion Werte von Tags-Array zurückgibt.Symfony2, Wie übergebe ich Array als Parameter an die Controller-Aktion?
mit dem folgenden Codierung (siehe routing.yml und controller.php unten) Ich erhalte die Fehlermeldung:
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]
Im Folgenden sind verschiedene Kombinationen von Routing und Controller Dateien ich habe bisher versucht:
// Version r1, routing.yml
blog_post_tags:
path: blog/post/{tags}
defaults: { _controller: DefaultController:list_postsByTagActionQ }
requirements:
tags : "[a-zA-Z0-9,]+"
// Version r2, routing.yml
blog_post_tags:
resource: "@BlogBundle/Controller/"
type: annotation
prefix: /blog/
defaults: { _controller: DefaultController:list_postsByTagActionQ }
// Version 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']);
}
// Version 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']);
}
// Version 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']);
}
// Version r3, routing.yml
blog_post_tags:
path: blog/post/{tags}
defaults: { _controller: DefaultController:list_postsByTagActionQ }
// Version 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);
}
Blick dieses http://stackoverflow.com/a/15545813/5397119 –
I Beispiel mit routing.yml benötigen und – olga
Werte, die Parameter nicht in meiner Frage controller.php ein Array bildet – olga