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

我有两个控制器SubmitPerformanceControllerPrintReportController

PrintReportController中,我有一个名为getPrintReport的方法

如何在SubmitPerformanceController中访问此方法

您可以通过以下方式访问控制器方法:

app('app\Http\Controllers\printreptcontroller')->getPrintReport();

这会起作用,但在代码组织方面是不好的(请记住为PrintReportController使用正确的名称空间)

您可以扩展PrintReportController,以便SubmitPerformanceController将继承该方法

类SubmitPerformanceController扩展了PrintReportController{
// ....
}

但这也将从printreptcontroller继承所有其他方法

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

trait打印报告{
公共函数getPrintReport(){
// .....
}
}

告诉您的控制器使用此特性:

类PrintReportController扩展控制器{
使用打印报告;
}
类SubmitPerformanceController扩展控制器{
使用打印报告;
}

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

你可以在这里阅读更多关于性格的信息

发表评论