我想执行一个真的不需要视图的动作。在这个例子中,这是一个“注销”函数,但这甚至可能是一个AJAX调用(例如,我只需要一个数字)。
我应该添加一个模块吗?好吧,我宁愿做一个“平面”脚本作为重定向到索引页面的动作,当它完成时。在这种情况下,在哪里放置这个平面脚本?
答案 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));
}