【问题标题】:Can I refactor out an "unused" $request variable in a controller?我可以在控制器中重构出“未使用”的 $request 变量吗?
【发布时间】:2017-05-05 21:52:50
【问题描述】:

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

在下面的控制器中,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


    【解决方案1】:

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

    // PageController
    public function submitContactForm() 
    {
        app()->make(ContactRequest::class);
    
        sendContactFormEmail();
    
        return redirect()->back();
    }
    

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

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

    sendContactFormEmail($request);
    

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

    【讨论】:

    • 有道理;我有点希望有一种不同的方式来映射它们,但这不是世界末日:-) 我同意app()->make 的可读性要差得多,为回复欢呼
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    相关资源
    最近更新 更多