Могу ли я сделать рефакторинг «неиспользованным»? переменная $ request в контроллере?

Допустим, я создаю небольшое приложение, небольшая часть которого отвечает за отправку электронного письма при отправке контактной формы. Я только хочу сделать это, если контактная форма проходит некоторую простую проверку.

В следующем контроллере 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' ];
}

2

Решение

Да, вы можете написать свой метод контроллера следующим образом:

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

sendContactFormEmail();

return redirect()->back();
}

и это будет иметь тот же эффект. Однако для меня это лучше использовать, как вы использовали раньше.

Также, возможно, вы каким-то образом используете полученные данные, поэтому было бы разумнее использовать их так:

sendContactFormEmail($request);

вместо того, чтобы внедрять запрос в метод sendContactFormEmail.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]