Допустим, я создаю небольшое приложение, небольшая часть которого отвечает за отправку электронного письма при отправке контактной формы. Я только хочу сделать это, если контактная форма проходит некоторую простую проверку.
В следующем контроллере ContactRequest $request
параметр не используется внутри метода, хотя Laravel использовал подсказку типа для автоматического применения ContactRequest
логика к запросу.
Можно ли добиться того же самого, не оставляя неиспользуемой переменной в методе контроллера?
// Route
Route::post( 'contact', 'PageController@submitContactForm' );
// PageController
public function submitContactForm( ContactRequest $request ) {
sendContactFormEmail();
return redirect()->back();
}
// ContactRequest
public function authorize() {
return hasNotSubmittedContactFormRecently();
}
public function rules() {
return [ 'message' => 'required' ];
}
Да, вы можете написать свой метод контроллера следующим образом:
// PageController
public function submitContactForm()
{
app()->make(ContactRequest::class);
sendContactFormEmail();
return redirect()->back();
}
и это будет иметь тот же эффект. Однако для меня это лучше использовать, как вы использовали раньше.
Также, возможно, вы каким-то образом используете полученные данные, поэтому было бы разумнее использовать их так:
sendContactFormEmail($request);
вместо того, чтобы внедрять запрос в метод sendContactFormEmail.
Других решений пока нет …