я делаю форму на странице, как это:Laravel4: маршрут missingMethod, когда представить форму, используя метод пут (Раскрыты, ошибка мной)
{{ 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'=>'[email protected]'));
Но я получаю contorller недостающего исключения.
любая помощь будет признателен :)
Редактировать
Некоторые дополнение: Если я использую метод пост вместо пут, я все еще получаю missingMethod. Если я использую метод get в методе маршрута и почты при отправке формы, данные формы будут отправлены, а затем бросьте исключение 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, выглядит следующим образом:
- хозяин -
- URI пользователи GET/{_ недостающее}
- имя -
- действие UserController @ missingMethod
- перед тем -
- после -
Запросить GET, почему?
Решаемые
Спасибо за людей посмотреть и ответили на мой вопрос. И извините, я ошибаюсь. В моем контроллере я использую Redirect::refresh()
вместо Redirect::back()
, пока я нахожусь на странице, запрошенной формой. Поэтому он запросит GET для обработки этого нового запроса после выполненного пост-запроса.
В любом случае, это заставляет меня больше понимать маршрут и что-то еще.Не все плохие вещи. ;-)
Теперь я отправляю свой метод updateProfile в UserController. См. Мой обновленный вопрос. Спасибо :) – tjfdfs