0

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

...pathToSite/Symfony/pathToBundleControllerAction/part1/part2/...../partN

我将能够part[1..N]单独获取所有内容,因为目标是拥有未知长度的路径,以通过单个路由将一些不同的数据类型推送到服务器。

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

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

谢谢。

4

1 回答 1

0

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

# 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 没有任何内容,那么您将找不到异常。路线是唯一的,参数的名称和数量定义了将采用的路线。

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

首先,您似乎正在尝试将数据发送到服务器以获得某种插入/更新功能。看看 HTTP 标准,GET 请求应该按照它的名字做,从服务器获取一些东西而不修改它。这意味着您应该使用 POST 请求。如果是这种情况,您可以随意填充诸如 POST 变量之类的长变量并将它们发送到服务器而不会出现很多问题。然后,您可以使用服务器逻辑来获取和解析这些变量(Symfony 使用检索到的 Request 对象实例可以轻松获取 GET 或 POST 变量)。此外,我很确定(尽管不是 100%)您只能将有限数量的数据填充到 GET 变量中,并且请求部分本身的长度也是有限的。这就是为什么你应该使用 POST 变量。

希望这能让您对您的问题有另一种看法。如果您想进一步讨论它,只需拍摄。

于 2013-09-28T08:43:31.540 回答