2016-12-20 5 views
2

私は小規模なアプリケーションを構築していますが、連絡フォームが送信されたときに電子メールを送信するのはその一部です。コンタクトフォームが単純な検証に合格した場合にのみ、私はそれをしたいと思っています。

以下のコントローラでは、ContactRequest $requestパラメータがメソッド内で使用されていませんが、Laravelはタイプヒントを使用してContactRequestロジックを要求に自動的に適用しました。

コントローラメソッドに未使用の変数を残さずに同じことを達成できますか?


// Route 
Route::post('contact', '[email protected]'); 

// PageController 
public function submitContactForm(ContactRequest $request) { 
    sendContactFormEmail(); 

    return redirect()->back(); 
} 

// ContactRequest 
public function authorize() { 
    return hasNotSubmittedContactFormRecently(); 
} 

public function rules() { 
    return [ 'message' => 'required' ]; 
} 

答えて

3

はい、あなたはそのようなあなたのコントローラメソッドを書くことができます:

// PageController 
public function submitContactForm() 
{ 
    app()->make(ContactRequest::class); 

    sendContactFormEmail(); 

    return redirect()->back(); 
} 

と、それは同じ効果があります。しかし、私の場合は、これまでに使用していたように使用する方が良いです。

sendContactFormEmail($request); 

代わりに、おそらくsendContactFormEmailメソッドにリクエストを注入する:このようにそれを使用する方が合理的であるかもしれないので

またおそらくあなたは何とか、あなたが受け取るデータを使用します。

+0

意味があります。私はそれらをマッピングする別の方法を望んでいましたが、それは世界の終わりではありません:-)私は 'app() - > make'ははるかに読みにくく、返信を歓迎します – Joe

関連する問題