Laravel在同一个控制器中执行多个功能

时间:2017-12-01 08:35:38

标签: php laravel function controller

是否可以在一个路径的同一控制器中执行多个功能。我认为它会是这样的,但它不起作用。

Route::get('getdata','controller@getData', 'controller@getData1', 'controller@getData2');

在控制器中有以下功能:

  • 的getData
  • getData1
  • getData2

或者有更简单的方法吗?

2 个答案:

答案 0 :(得分:4)

在控制器中

添加类似的内容。

class YourController extends Controller {
    //...

    protected function getAllData() {
        //Executes the seperate functions.
        $this->getData();
        $this->getData1();
        $this->getData2();
    }

    //...
}

这将分别执行这些功能。

然后从您的路线中,您只需将YourController@getAllData称为控制器的功能。

答案 1 :(得分:0)

如果多个控制器操作负责单个路由,则没有意义。这不是MVC的工作方式。每条路线应该只有一个动作,并在该动作中调用所需的所有其他功能。

请记住,对于最佳实践,控制器的每个方法必须只包含响应请求的代码,而不是业务逻辑,如果您还有其他需要调用的函数,请将它们放在另一个其他类(层)中

class MyController extends Controller {

    public function myAction(MyService $myService) {
        $myService->getData();

        // not $this->getData()
    }
}