1. ホーム
  2. php

[解決済み】Laravel 5で別のコントローラからコントローラのメソッドにアクセスする

2022-04-11 06:16:12

質問

2つのコントローラがあります SubmitPerformanceControllerPrintReportController .

PrintReportController というメソッドを持っています。 getPrintReport .

でこのメソッドにアクセスする方法 SubmitPerformanceController ?

解決方法は?

このように、コントローラのメソッドにアクセスすることができます。

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 )

traitsの詳細については、こちらをご覧ください。 ここで .