Я могу рефакторинг из "неиспользованных" $запроса переменной в контроллере?


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

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

1 ответ:

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

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

    sendContactFormEmail();

    return redirect()->back();
}

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

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

sendContactFormEmail($request);

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