没有观点的行动。需要一个模块?

时间:2011-07-21 13:00:15

标签: php ajax model-view-controller view symfony1

我想执行一个真的不需要视图的动作。在这个例子中,这是一个“注销”函数,但这甚至可能是一个AJAX调用(例如,我只需要一个数字)。

我应该添加一个模块吗?好吧,我宁愿做一个“平面”脚本作为重定向到索引页面的动作,当它完成时。在这种情况下,在哪里放置这个平面脚本?

1 个答案:

答案 0 :(得分:4)

是的,你仍然想为此创建一个模块(控制器)。

出于多种原因: - 如果您想要更改行为,它已经在您的代码中。 - 对于注销操作,您希望操作当前(sfUser)用户,以获取要启动symfony堆栈的实例,那么为什么不创建控制器。 - 如果你开始为小动作创建各种小文件,它被认为是'不良实践'或'反MVC'。

创建新模块有多难? ./symfony generate:module frontend user

如果您没有视图,则可以始终转发/重定向请求。 (在你的行动中:$this->redirect('homepage');)。

或者,对于AJAX动作,您只能返回所需的数据:

if ($request->isXmlHttpRequest()) {
   // set correct header
   return $this->renderText(json_encode($data));
}