如何解决symfony-从另一个动作中调用一个动作
| 我在两个不同的模块中有两个不同的操作,我需要在另一个模块中执行其中一个。 考虑以下操作://first module
class module1Actions extends sfActions {
protected function function1Form(sfWebRequest $request,sfForm $form) {
//i need to call a function from module2 in here to do sth but i don\'t need any view to be returned.
//but i need some variables to be returned by the second action
}
}
//second module
class module2Actions extends sfActions {
protected function executeSth(sfWebRequest $request,sfForm $form) {
//Do Something in here and return some values.
}
}
如我所说,我需要执行一个动作并从中获取一些值,但我不知道如何调用它。它在另一个模块中。我可以使用它吗?怎么样?以及我如何找回价值?
谢谢。
解决方法
根据获得这些值的方式,以下是最佳途径:
如果通过记录或表上的操作获取它们,请将代码移至模型层,然后从两个动作中调用
如果以其他方式(例如处理用户输入)获取它们,则在
lib
文件夹中创建一个实用程序类,并将其添加为函数,然后从两个操作中调用该类
这样,您可以防止代码重复,并且仍然不会破坏MVC的关注点分离。
, 我将为Maerlyn的答案添加第三个方法。它在几种有限的情况下很有用,可防止代码重复,但也不会通过将错误的代码移到模型层来破坏正确的MVC设计。
将要发送/和/或返回的值存储在myUser类中,然后使用$this->forward()
调用运行相关操作,而不会导致浏览器再次发出请求。
请注意,$ this-> forward()立即停止您从中调用它的操作,并且所转发操作的模板将显示出来。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。