我们假设我正在构建一个小型应用程序,其中一小部分负责在提交联系表单时发送电子邮件。如果联系表单通过了一些简单的验证,我只想这样做。
在以下控制器中,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' ];
}
答案 0 :(得分:3)
是的,您可以像这样编写控制器方法:
// PageController
public function submitContactForm()
{
app()->make(ContactRequest::class);
sendContactFormEmail();
return redirect()->back();
}
它会产生同样的效果。但是对我来说,最好像以前一样使用它。
也可能以某种方式使用您收到的数据,因此使用它可能更合理:
sendContactFormEmail($request);
而不是将请求注入sendContactFormEmail方法。