Php 如何从Symfony2路径获取路径部件

Php 如何从Symfony2路径获取路径部件,php,url,path,symfony-2.3,Php,Url,Path,Symfony 2.3,我是Symfony的初学者,我正在尝试从如下格式的url获取所有部分: ...pathToSite/Symfony/pathToBundleControllerAction/part1/part2/...../partN 我将能够单独获取所有部分[1..N],因为目标是拥有未知长度的路径,以便通过单个路由将一些不同的数据类型推送到服务器 我尝试了一些在web上找到的变体,比如$this->getRequest()->query->all()(在控制器中),但这些都没有达到我预期的效果 也许有一

我是Symfony的初学者,我正在尝试从如下格式的url获取所有部分:

...pathToSite/Symfony/pathToBundleControllerAction/part1/part2/...../partN
我将能够单独获取所有
部分[1..N]
,因为目标是拥有未知长度的路径,以便通过单个路由将一些不同的数据类型推送到服务器

我尝试了一些在web上找到的变体,比如
$this->getRequest()->query->all()
(在控制器中),但这些都没有达到我预期的效果

也许有一个非常简单的解决方案,通过修改路由或其他方式


谢谢。

为了回答您的问题,您不需要解析它们,它们是请求的一部分,应该唯一地定义请求。例如,您有以下众所周知的示例:

# routing.yml:
dummy_page_homepage:
    pattern:  /hello/{name}
    defaults: { _controller: DummyPageBundle:Default:index }

// DefaultController.php
public function indexAction($name)
{
    return $this->render('DummyPageBundle:Default:index.html.twig', array('name' => $name));
}
看看{name}和$name如何匹配?这表示在/hello/…之后的任何内容。。。解析并传递给name函数参数,您可以根据需要使用该参数。如果您的请求url中只包含/hello,而不包含任何内容,您将得到NotFoundException。路由是唯一的,参数的名称和数量定义了将采用的路由

现在,根据你的问题,我想你想要一个未知数量的这样的参数。我认为这在Symfony是不可能的。老实说,我认为这在任何MVC框架中都是不可能的。我认为你选择了错误的方法。如果我是你,我会这么做

首先,似乎您正试图将数据发送到服务器以实现某种插入/更新功能。查看HTTP标准,GET请求应该按照其名称执行,从服务器获取某些内容而不进行修改。这意味着您应该使用POST请求。如果是这样的话,您可以自由地将长变量填充为POST变量,并将它们发送到服务器,而不会出现很多问题。然后,您可以使用服务器逻辑来获取和解析这些变量(Symfony使使用检索到的请求对象实例轻松获取GET或POST变量)。另外,我很确定(虽然不是100%)您只能将有限的数据量塞进GET变量,请求部分本身的长度也是有限的。这就是为什么应该使用POST变量。如果POST数组变量更适合您的用例,您还可以自由发送它,并填充值part1、part2。。。partn作为数组值


希望这能让你对你的问题有另一种看法。如果你想进一步讨论,那就开枪吧。

验证不是因为代码,而是因为解释。事实上,我需要的是POST数据来传递任意数据。