2017-12-01 22 views
0

同じコントローラで複数の機能を1つのルートで実行することは可能ですか?私はそれがこのようなものになると思ったが、うまくいかなかった。コントローラでLaravelは同じコントローラ内で複数の機能を実行します

Route::get('getdata','[email protected]', '[email protected]', '[email protected]'); 

これらの関数です:

  • のgetData
  • getData1
  • getData2

それとももっと簡単な方法がありますか?

+0

なぜ、最初のメソッドが他のメソッドを呼び出せないのですか?そうでなければ、ルーターは特定のアクションにルートを割り当てます。 – lagbox

+0

他のすべてのメソッドを呼び出すメソッドを作成します。メインメソッドをルートに割り当てます。 – Marc

答えて

3

コントローラ内

このようなものを追加します。

class YourController extends Controller { 
    //... 

    protected function getAllData() { 
     //Executes the seperate functions. 
     $this->getData(); 
     $this->getData1(); 
     $this->getData2(); 
    } 

    //... 
} 

これはそれぞれ機能を実行します。

あなたのルートからは、コントローラの機能として[email protected]を呼び出すだけです。

+0

関数はExcelでアクティビティを記述します。それはそれです。何も返さない。関数は呼び出し時に一度だけ実行する必要があります。 – Marc

+0

@Marcここで例を確認してください。つまり、戻り値を数えることなくすべての関数を呼び出します。ただし、成功/失敗の状態を返すだけでなく、追加のチェックを行うことをお勧めします。 – Classified

0

複数のコントローラアクションが1つのルートを担当する場合は意味がありません。それはMVCの仕組みではありません。それぞれのルートに対して1つだけのアクションを用意し、そのアクションの中で必要な機能をすべて呼び出す必要があります。

ベストプラクティスのために、コントローラの各メソッドには、ビジネスロジックではなく要求に応答するコードのみが含まれていなければならず、呼び出す必要がある他の関数がある場合は、 )。

class MyController extends Controller { 

    public function myAction(MyService $myService) { 
     $myService->getData(); 

     // not $this->getData() 
    } 
} 
関連する問題