2

假设我正在构建一个小型应用程序,其中一小部分负责在提交联系表单时发送电子邮件。如果联系表格通过了一些简单的验证,我只想这样做。

在下面的控制器中,该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' ];
}
4

1 回答 1

3

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

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

    sendContactFormEmail();

    return redirect()->back();
}

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

也可能你以某种方式使用你收到的数据,所以像这样使用它可能更合理:

sendContactFormEmail($request);

而不是可能将请求注入到 sendContactFormEmail 方法中。

于 2016-12-20T16:42:33.683 回答