2016-12-20 29 views
2

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

在以下控制器中,ContactRequest $request参数在方法内部未使用,尽管Laravel使用类型提示自动将ContactRequest逻辑应用于请求。

是否有可能实现同样的事情,而不会在控制器方法中留下未使用的变量?


// Route 
Route::post('contact', '[email protected]'); 

// PageController 
public function submitContactForm(ContactRequest $request) { 
    sendContactFormEmail(); 

    return redirect()->back(); 
} 

// ContactRequest 
public function authorize() { 
    return hasNotSubmittedContactFormRecently(); 
} 

public function rules() { 
    return [ 'message' => 'required' ]; 
} 

回答

3

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

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

    sendContactFormEmail(); 

    return redirect()->back(); 
} 

,这将有同样的效果。不过对于我来说,最好先使用它。

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

sendContactFormEmail($request); 

,而不是可能注入请求转换成sendContactFormEmail方法。

+0

有道理;我有点希望有一种不同的映射方式,但它不是世界的尽头:-)我同意'app() - > make'的可读性要低得多,为答复而欢呼 – Joe

相关问题