如何使用Symfony 2将数组作为参数传递给控制器操作?你能写一个例子来说明如何定义包含未知长度数组作为参数的路由。例如,url:http://localhost:8000/blog/post/?tags=[tag1,tag2,tag3]其中标记数量从0到100不等。 此路由的示例控制器,其中action返回tags数组的值。Symfony2,如何将数组作为参数传递给控制器操作?
使用下面的编码(见的routing.yml及以下Controller.php这样)我得到的错误:
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").
网址:
http://localhost:8000/blog/post/tag1
http://localhost:8000/blog/post/tag1/tag2/tag3/tag4
http://localhost:8000/blog/post/?tags=[tag1,tag2]
下面是路由和控制器中的文件不同的组合我已尝试到目前为止:
//版本r1,routing.yml
blog_post_tags:
path: blog/post/{tags}
defaults: { _controller: DefaultController:list_postsByTagActionQ }
requirements:
tags : "[a-zA-Z0-9,]+"
//版本R2,routing.yml中
blog_post_tags:
resource: "@BlogBundle/Controller/"
type: annotation
prefix: /blog/
defaults: { _controller: DefaultController:list_postsByTagActionQ }
//版本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']);
}
//版本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']);
}
//版本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']);
}
//版本R3,routing.yml中
blog_post_tags:
path: blog/post/{tags}
defaults: { _controller: DefaultController:list_postsByTagActionQ }
//版本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);
}
看看这个http://stackoverflow.com/a/15545813/5397119 –
我需要例如使用的routing.yml和Controller.php这样 – olga
值,而不是参数在我的问题形成阵列 – olga