Model view controller symfony-从另一个操作调用一个操作

Model view controller symfony-从另一个操作调用一个操作,model-view-controller,symfony1,action,Model View Controller,Symfony1,Action,我在两个不同的模块中有两个不同的操作,我需要在另一个模块中执行其中一个 考虑以下行动: //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

我在两个不同的模块中有两个不同的操作,我需要在另一个模块中执行其中一个

考虑以下行动:

//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()会立即停止您从中调用它的操作,并且将显示转发操作的模板。

    您不能这样做。这将打破MVC模式。您能告诉med如何调用和执行lib文件吗?