我可以重构一个"未使用的"控制器中的$ request变量?

时间:2016-12-20 15:59:33

标签: php laravel laravel-5 laravel-validation laravel-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' ];
}

1 个答案:

答案 0 :(得分:3)

是的,您可以像这样编写控制器方法:

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

    sendContactFormEmail();

    return redirect()->back();
}

它会产生同样的效果。但是对我来说,最好像以前一样使用它。

也可能以某种方式使用您收到的数据,因此使用它可能更合理:

sendContactFormEmail($request);

而不是将请求注入sendContactFormEmail方法。