在 Laravel 中使用多个控制器时,可能存在需要从一个控制器访问另一个控制器中的方法的情况。这可以通过各种技术来实现,如下所述。
此方法涉及使用应用程序外观直接访问控制器方法:
<code class="php">app('App\Http\Controllers\PrintReportController')->getPrintReport();</code>
而这是可行的,但不建议用于代码组织目的。
另一个选项是继承包含所需方法的控制器。例如,如果 SubmitPerformanceController 需要从 PrintReportController 访问 getPrintReport 方法:
<code class="php">class SubmitPerformanceController extends PrintReportController { // ... }</code>
但是,这种方法可能会导致继承不必要的方法。
Traits 是在控制器之间共享通用功能且没有继承缺点的首选解决方案。以下是如何使用特征:
创建特征
在应用程序/特征中定义特征:
<code class="php">trait PrintReport { public function getPrintReport() { // ... } }</code>
包含特征在控制器中
将特征添加到两个控制器:
<code class="php">class PrintReportController extends Controller { use PrintReport; } class SubmitPerformanceController extends Controller { use PrintReport; }</code>
通过这种方法,两个控制器都可以通过 $this->getPrintReport() 访问 getPrintReport 方法。
以上是如何在 Laravel 5 中从一个控制器访问另一个控制器中的方法?的详细内容。更多信息请关注PHP中文网其他相关文章!