Symfony2首选目录放置一个类

时间:2012-12-14 23:40:05

标签: php ajax symfony

我对Symfony2非常,我只是想知道这样做的优先方式是什么。

我有很多 admin 操作,涉及接收表单数据并对其进行处理。当然,处理完成后,控制器操作会发送return $this->redirect($this->generateUrl('.....'));

现在我已经创建了一个JavaScript,它通过ajax提交表单,如果浏览器支持它,我需要修改我的控制器操作以返回包含Response的{​​{1}}对象,但仅当请求是通过ajax发送的时候。 / p>

  1. 是否可以识别发送给控制器的请求是否是AJAX请求?

  2. 在目录树中放置名为json array的类的地方是哪里可以根据请求的类型重定向或返回json数组?我意识到Symfony2对这些事情非常严格,所以我想从一开始就把它弄好。也许甚至已经有捆绑解决方案呢?

  3. 更新

    我发现我可以在控制器中使用$ this-> getRequest-> isXmlHttpRequest()。

    问题2仍然存在。

1 个答案:

答案 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 ComponentSymfony2 Framework specific documentation

  

我意识到Symfony2对这些事情非常严格

Symfony对你的目录结构并不严格。它提供了具有推荐结构的默认标准版,但您可以更改它以使其成为您的。如果一个类用PSR-0标准编写,symfony将加载你需要的等级类。