我对Symfony2非常新,我只是想知道这样做的优先方式是什么。
我有很多 admin 操作,涉及接收表单数据并对其进行处理。当然,处理完成后,控制器操作会发送return $this->redirect($this->generateUrl('.....'));
。
现在我已经创建了一个JavaScript,它通过ajax提交表单,如果浏览器支持它,我需要修改我的控制器操作以返回包含Response
的{{1}}对象,但仅当请求是通过ajax发送的时候。 / p>
是否可以识别发送给控制器的请求是否是AJAX请求?
在目录树中放置名为json array
的类的地方是哪里可以根据请求的类型重定向或返回json数组?我意识到Symfony2对这些事情非常严格,所以我想从一开始就把它弄好。也许甚至已经有捆绑解决方案呢?
更新
我发现我可以在控制器中使用$ this-> getRequest-> isXmlHttpRequest()。
问题2仍然存在。
答案 0 :(得分:0)
在目录树中放置名为ResponseHandler的类的优先位置,它会根据请求的类型重定向或返回json数组吗?
如果您执行AJAX请求,则将数据存储在参数,POST或GET参数中。您可以使用以下命令在控制器中访问此参数:
// ...
public function finishAction()
{
// if you use a GET request
$data = $this->getRequest->query->get('my-get-parameter');
// and if you use a POST request
$data = $this->getRequest->request->get('my-get-parameter');
// ... do something with the data
}
但是要回答你的问题:
symfony核心框架使用Event Dispatcher组件来触发和附加事件。这些事件在Symfony代码中随处触发。您可以将类附加到事件,并且在触发该事件时,您可以更改它。这样,您可以修改Response
对象。
代码中抛出的事件可以在该组件的*Events
类中找到。在这种情况下,我们需要REQUEST
事件。详细了解事件调度程序以及如何在文档中附加事件:Event Dispatcher Component和Symfony2 Framework specific documentation。
我意识到Symfony2对这些事情非常严格
Symfony对你的目录结构并不严格。它提供了具有推荐结构的默认标准版,但您可以更改它以使其成为您的。如果一个类用PSR-0标准编写,symfony将加载你需要的等级类。