Laravel 5 中另一个控制器的访问控制器方法

发布于 2022-07-28 23:03:49

我有两个控制器SubmitPerformanceControllerPrintReportController.

PrintReportController我有一个名为getPrintReport.

如何访问此方法SubmitPerformanceController

关注者
0
被浏览
15
1 个回答
  • 面试哥
    面试哥 2022-07-28
    为面试而生,有面试问题,就找面试哥。

    您可以像这样访问您的控制器方法:

    app('App\Http\Controllers\PrintReportController')->getPrintReport();
    

    这将起作用,但在代码组织方面很糟糕(请记住为您的PrintReportController.

    您可以扩展PrintReportControllersoSubmitPerformanceController将继承该方法

    class SubmitPerformanceController extends PrintReportController {
         // ....
    }
    

    但这也会继承所有其他方法PrintReportController

    最好的方法是创建一个trait(例如 in app/Traits),在那里实现逻辑并告诉您的控制器使用它:

    trait PrintReport {
    
        public function getPrintReport() {
            // .....
        }
    }
    

    告诉你的控制器使用这个特性:

    class PrintReportController extends Controller {
         use PrintReport;
    }
    
    class SubmitPerformanceController extends Controller {
         use PrintReport;
    }
    

    这两种解决方案都SubmitPerformanceController具有getPrintReport方法,因此您可以$this->getPrintReport();从控制器内部调用它或直接作为路由调用它(如果您将其映射到routes.php

    您可以在此处阅读有关特征的更多信息。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看