2016-08-22 6 views
0

すべてのコントローラで共通のメソッドをいくつか作成しています。laravelで一般的なメソッドを書く5.2

これまではcodeigniterを使用していましたが、コアディレクトリにMY_Controllerクラスを作成してから、コントローラディレクトリ内のすべてのコントローラでコントローラを拡張しました。

同義語Laravelとしたいです。しかし、私は、send_emailvalidate_captchaajax_file_uploadのような一般的な方法と、アプリケーション全体で同じままである他の一般的な方法をどこに書くべきか混乱しています。

このようなクラスやミドルウェアを定義するには、良い方法を提案してください。作成するにはどうすればよいですか?

+0

これを達成するために既に試したことを投稿する必要があります。あなたには数多くの可能性があり、要件ごとに異なる可能性があります。キャプチャを検証する場合は、RequestValidatorを記述して他のバリデーターに拡張することができますが、バリデーターを使用する必要はありませんので、独自のコントローラーを作成し、検証メソッドを提供して他のコントローラーに拡張させることができます –

答えて

0

OK。

  1. すべてのコントローラに適用されるメソッドを記述する必要があります。あなたは
    を修正できます/ App\Http\Controllers\Controller.phpを修正する必要があります。すべて コントローラはLaravelで拡張されているため、
  2. アプリケーション全体で使用できるクラスを作成する必要があります。あなたはappフォルダに好きなクラスを書く: 決して容易な

ステップ1です。そしてpsr-4大会

ステップ2に従ってください:App\Providers\AppServiceProviderでLaravelアプリケーション に登録します。方法はregister()です。

$this->app->bind('bindname', function ($app) { 
    return new \App\YourClass; 
    // If you want to inject other class to YourClass contructor 
    // return new \App\YourClass($app->make('otherbindname')); 
}); 

ステップ3を追加します。それを使用してください。

app()->make('bindname'); 

app('bindname'); 

app()['bindname']; 

\App::make('bindname'); 

//etc 
0

をあなたが(laravelで、ブートで、サービスプロバイダのサービスを使用している場合には、すべてのページに対して同じ方法のようなものを書いた場合)メソッドを:あなたの全体アプリケーションでYOURCLASSにアクセスするには、いくつかの方法があります。すべてのページでグローバルになっています

+0

ようこそ[スタックオーバーフロー](http://stackoverflow.com/)! [良い答えを書くにはどうすればいいですか](http://stackoverflow.com/help/how-to-answer)をお読みください。 –

+0

ありがとう!!!私たちはあなたがそれをする方法を理解していない場合は議論のために解決するためにここにいる –

+0

あなたがブロの上の誰よりも判断することができますプロファイルのベースを考える場合。あなたは成功の軌道に乗っている!私の目を開いてくれてありがとう。 :) –

関連する問題