How to Access a Controller Method from Another Controller in Laravel 5
When working with multiple controllers in Laravel, you may need to access a method from one controller within another. Here are various approaches to achieve this:
Using App::call() Method
You can access the method using the app() helper function:
<code class="php">app('App\Http\Controllers\PrintReportController')->getPrintReport();</code>
However, this approach is not recommended due to organizational concerns.
Extending the Controller
You can inherit the method by extending the other controller:
<code class="php">class SubmitPerformanceController extends PrintReportController { // .... }</code>
This will inherit all methods from PrintReportController, which may not be desirable.
Using Traits
The preferred approach is to create a trait with the desired logic:
<code class="php">trait PrintReport { public function getPrintReport() { // ..... } }</code>
Then, include the trait in the relevant controllers:
<code class="php">class PrintReportController extends Controller { use PrintReport; } class SubmitPerformanceController extends Controller { use PrintReport; }</code>
This allows both controllers to access the getPrintReport() method through $this->getPrintReport().
The above is the detailed content of How to Access a Controller Method from Another Controller in Laravel 5?. For more information, please follow other related articles on the PHP Chinese website!