我已经制作了一个联系表单,我想将用户发送到感谢页面或返回联系表单,并显示错误消息,说明缺少哪些字段需要填写。
最初我尝试过:
public function submit() {
if (Input::has('name')) {
$name = Input::get('name');
} else {
return Redirect::to('apply')->with('message', 'Login Failed');
}
$this->thanks($name);
}
public function thanks() {
return View::make('apply.thanks', array('metaTitle' => 'Application Sent | Thank you'));
}
但这给了我一个错误。
所以我用[{1}}
替换了行$this->thanks($name);
它有效。
我的两个问题是:
这是将用户发送到感谢页面的正确方法吗?
如果出现错误,我想发回哪些错误(必填字段未填写)。这是如何实现的?
我试图实现路由名称:
路由文件
return Redirect::to('apply/thanks')->with('message', 'Login Failed');
申请文件
Route::post('apply/submit', array('as' => 'applicationSubmit', 'uses' => 'ApplyController@submit'));
Route::post('apply/thanks', array('as' => 'applicationThanks', 'uses' => 'ApplyController@thanks'));
但是我收到错误public function submit() {
$validationErrors = array();
if (Input::has('name')) {
$name = Input::get('name');
} else {
$validationErrors[] = 'You must enter your name';
}
if($validationErrors) {
if(Request::ajax()){
} else {
return Redirect::to('apply')->with('validationErrors', $validationErrors);
}
} else {
if(Request::ajax()){
} else {
return Redirect::route('applicationThanks')->with('name', $name);
}
}
}
(我发现了如何打开详细的错误消息:))
答案 0 :(得分:1)
我想你想要这样的东西:
public function submit() {
if (Input::has('name')) {
$name = Input::get('name');
} else {
return Redirect::to('apply')->with('message', 'Login Failed');
}
return Redirect::to('thanks')->with('name', $name);
}
public function thanks() {
return View::make('apply.thanks', array('metaTitle' => 'Application Sent | Thank you'));
}
当然,您需要定义到thanks
的路线。
但是你可以在不使用thanks
方法的情况下简化它:
public function submit() {
if (Input::has('name')) {
$name = Input::get('name');
return View::make('apply.thanks', array('metaTitle' => 'Application Sent | Thank you'));
}
return Redirect::to('apply')->with('message', 'Login Failed');
}
我宁愿选择第二种方法(也不需要额外的重定向来显示视图)。
您还可以考虑使用named routes以防将来更改您的网址
修改强>
thanks
的路由需要使用get方法而不发布,因为你重定向它(用户没有将表单数据发送到此路由),所以代替:
Route::post('apply/thanks', array('as' => 'applicationThanks', 'uses' => 'ApplyController@thanks'));
应该是:
Route::get('apply/thanks', array('as' => 'applicationThanks', 'uses' => 'ApplyController@thanks'));
我建议你看看Basic routing - 你应该真正理解动词和路由,如果你不在乎,你可以随时使用Route::any
来匹配所有动词:POST,GET, PUT,PATCH和DELETE - 但在我看来,使用正确的动词并不是所有动词都更好。