【问题标题】:Laravel execute multiple functions in the same controllerLaravel 在同一个控制器中执行多个功能
【发布时间】:2017-12-01 08:35:38
【问题描述】:

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

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

控制器中有这些功能:

  • 获取数据
  • getData1
  • getData2

或者有没有更简单的方法?

【问题讨论】:

  • 为什么你的第一个方法不能调用其他方法?不,路由器将路由分配给特定操作,就是这样。
  • 所以创建一个调用所有其他方法的方法。将 main 方法分配给路由。

标签: php laravel function controller


【解决方案1】:

在控制器中

添加类似的内容。

class YourController extends Controller {
    //...

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

    //...
}

这将分别执行功能。

然后从您的路由中,您只需调用YourController@getAllData 作为控制器的功能。

【讨论】:

  • 这些函数确实在 excel 中编写活动,仅此而已。它不返回任何东西。这些函数只需要在调用时执行一次。
  • @Marc 现在检查示例 - 这将调用所有函数而不依赖于返回。但是,我建议您进行额外检查以及返回成功/失败状态。
【解决方案2】:

如果多个控制器动作负责单个路由是没有意义的。这不是 MVC 的工作方式。您应该为每条路由设置一个且只有一个操作,并在该操作中调用您需要的所有其他函数。

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

class MyController extends Controller {

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

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

【讨论】:

    猜你喜欢
    • 2017-02-11
    • 2019-07-20
    • 2017-10-12
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    相关资源
    最近更新 更多