Laravel で複数のコントローラーを操作する場合、あるコントローラーから別のコントローラー内のメソッドにアクセスする必要があるシナリオが発生する場合があります。 。これは、以下で説明するように、さまざまな手法を通じて実現できます。
このアプローチには、アプリ ファサードを使用してコントローラー メソッドに直接アクセスすることが含まれます。
<code class="php">app('App\Http\Controllers\PrintReportController')->getPrintReport();</code>
whileこれは機能しますが、コード編成の目的ではお勧めできません。
もう 1 つのオプションは、目的のメソッドを含むコントローラーを継承することです。たとえば、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 中国語 Web サイトの他の関連記事を参照してください。