我有两个控制器SubmitPerformanceController
和PrintReportController
。
在PrintReportController
中,我有一个名为getPrintReport
的方法。
如何在SubmitPerformanceController
中访问此方法?
您可以像这样访问您的controller方法:
app('App\Http\Controllers\PrintReportController')->getPrintReport();
这是可行的,但从代码组织的角度来看,这是很糟糕的(记住要为printreportcontroller
使用正确的名称空间)
您可以扩展PrintReportController
,以便SubmitPerformanceController
继承该方法
class SubmitPerformanceController extends PrintReportController {
// ....
}
但这也将从printreportcontroller
继承所有其他方法。
最好的方法是创建一个trait
(例如在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
中映射了它)
你可以在这里阅读更多关于特质的内容。