Laravel 5 中另一个控制器的访问控制器方法
我有两个控制器SubmitPerformanceController
和PrintReportController
.
在PrintReportController
我有一个名为getPrintReport
.
如何访问此方法SubmitPerformanceController
?
-
您可以像这样访问您的控制器方法:
app('App\Http\Controllers\PrintReportController')->getPrintReport();
这将起作用,但在代码组织方面很糟糕(请记住为您的
PrintReportController
.您可以扩展
PrintReportController
soSubmitPerformanceController
将继承该方法class SubmitPerformanceController extends PrintReportController { // .... }
但这也会继承所有其他方法
PrintReportController
。最好的方法是创建一个
trait
(例如 inapp/Traits
),在那里实现逻辑并告诉您的控制器使用它:trait PrintReport { public function getPrintReport() { // ..... } }
告诉你的控制器使用这个特性:
class PrintReportController extends Controller { use PrintReport; } class SubmitPerformanceController extends Controller { use PrintReport; }
这两种解决方案都
SubmitPerformanceController
具有getPrintReport
方法,因此您可以$this->getPrintReport();
从控制器内部调用它或直接作为路由调用它(如果您将其映射到routes.php
)您可以在此处阅读有关特征的更多信息。