我可以重构控制器中“未使用的”$request 变量吗?

问题描述 投票:0回答: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' ];
}
php laravel laravel-5 laravel-validation laravel-request
2个回答
3
投票

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

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

    sendContactFormEmail();

    return redirect()->back();
}

也会有同样的效果。然而对我来说,最好像你以前用过的那样使用它。

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

sendContactFormEmail($request);

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


0
投票

使用 phpstorm IDE,尝试使用

进行注释
/**
 * @noinspection PhpUnusedParameterInspection
 */
public function submitContactForm( ContactRequest $request ) { ... }
© www.soinside.com 2019 - 2024. All rights reserved.