我在这样的页面上制作表格:
{{ Form::open(array('method'=>'put', 'url'=>URL::to('users/update').'/'.Auth::user()->id, 'class'=>'form-horizontal')) }}
我尝试更新数据而不转到新页面(获取数据),然后在该页面上发布以进行更新。
然后我使用此路由来映射处理请求的方法:
Route::put('users/update/{id}', array('before'=>'csrf', 'uses'=>'UserController@updateProfile'));
但我得到的控制器缺少例外。
任何帮助都会感激不尽:)
修改
一些补充:如果我使用post方法而不是put,我仍然会得到 missingMethod 。如果我在路由中使用get方法并在表单提交时使用post方法,则提交的表单数据将会消失,然后抛出 tokenNotMatch 异常。
更新
UserController
中的一些相关代码public function updateProfile($id)
{
if (Auth::check() && $id == Auth::user()->id) {
/*
if (Request::ajax()) {
Debugbar::info('ajax');
}*/
$input = array(
'username' => Input::get('username'),
'email' => Input::get('email')
);
$rules = array(
'username' => 'required|min:4|unique:users',
'email' => 'required|email|unique:users'
);
$validator = Validator::make($input, $rules);
if ($validator->fails()) {
return Redirect::refresh()->with('validator', $validator->messages()->all());
} else {
$this->user->username = $input['username'];
$this->user->email = $input['email'];
$this->user->save();
return Redirect::refresh()->with('message', Lang::get('user/message.profile_updated'));
}
} else {
return Redirect::to('users/login')->with('message', Lang::get('user/message.login_first'));
}
}
路线信息(已添加)
当我使用post
提交表单并在路线上设置帖子时,Debugbar生成的路由信息如下所示:
请求 GET ,为什么?
解决
感谢大家查看并回答了我的问题。抱歉,我犯了一个错误,在我的控制器中,当我在表单请求的页面上时,我使用Redirect::refresh()
而不是Redirect::back()
。因此,在完成发布请求后,它会请求 GET 处理此新请求。
无论如何,它让我更了解路线和其他东西。并非所有坏事。 ; - )
答案 0 :(得分:1)
它的含义是您的控制器中没有updateProfile
功能。或者你在某个地方有一个拼写错误,但它在UserController中找不到该功能。
答案 1 :(得分:0)