2016-12-20 4 views
2

Nehmen wir an, ich baue eine kleine Anwendung, bei der ein kleiner Teil dafür verantwortlich ist, eine E-Mail zu senden, wenn ein Kontaktformular eingereicht wird. Ich möchte das nur tun, wenn das Kontaktformular eine einfache Validierung besteht.

In dem Folgeregler der ContactRequest $request Parameter innerhalb der Methode nicht verwendet werden, obwohl die Art Laravel-Hinting verwendet, um die Anforderung die ContactRequest Logik automatisch anzuwenden.

Ist es möglich, dasselbe zu erreichen, ohne eine unbenutzte Variable in der Controller-Methode zu belassen?


// 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' ]; 
} 

Antwort

3

Ja, können Sie Ihre Controller-Methode wie so schreiben:

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

    sendContactFormEmail(); 

    return redirect()->back(); 
} 

und es wird dieselbe Wirkung haben. Aber für mich ist es besser, es so zu benutzen, wie du es vorher benutzt hast.

auch wahrscheinlich verwenden Sie irgendwie Daten, die Sie erhalten, so könnte es sinnvoll sein es wie folgt zu verwenden:

sendContactFormEmail($request); 

statt wahrscheinlich Injektion Anfrage in sendContactFormEmail Methode.

+0

Sinn ergibt; Ich habe irgendwie auf eine andere Art der Zuordnung gehofft, aber es ist nicht das Ende der Welt :-) Ich stimme zu, dass die 'app() -> make 'viel weniger lesbar ist, prost für die Antwort – Joe

Verwandte Themen