laravel хвърля MethodNotAllowedHttpException
Опитвам се да пусна нещо много елементарно. Свикнал съм с CI и сега уча Laravel 4, а техните документи не го правят лесно! Както и да е, опитвам се да създам формуляр за вход и просто да се уверя, че данните са публикувани успешно, като ги отпечатам в следващия формуляр. Получавам това изключение:
Symfony \ Component \ HttpKernel \ Exception \
MethodNotAllowedHttpException
и моят MemberController.php:
public function index()
{
if (Session::has('userToken'))
{
/*Retrieve data of user from DB using token & Load view*/
return View::make('members/profile');
}else{
return View::make('members/login');
}
}
public function validateCredentials()
{
if(Input::post())
{
$email = Input::post('email');
$password = Input::post('password');
return "Email: " . $email . " and Password: " . $password;
}else{
return View::make('members/login');
}
}
и маршрути има:
Route::get('/', function()
{
return View::make('hello');
});
Route::get('/members', 'MemberController@index');
Route::get('/validate', 'MemberController@validateCredentials');
и накрая моят изглед login.php има тази посока на формата:
<?php echo Form::open(array('action' => 'MemberController@validateCredentials')); ?>
Всяка помощ ще бъде високо оценена.
102
3
Получавате тази грешка, защото изпращате към маршрут
GET
.Бих разделил маршрутизацията ви за
validate
на отделни маршрутиGET
иPOST
.Нови маршрути:
Тогава методът на вашия контролер може да бъде просто
Подозирам, че проблемът е в дефиницията на маршрута.
Дефинирали сте маршрута като заявка
GET
, но формулярът вероятно изпраща заявкаPOST
. Променете дефиницията на маршрута.Като цяло е по-добра практика да се използват именувани маршрути (помага за мащабиране, ако методът/класът на контролера се промени).
Във формуляра използвайте следното
по подразбиране
Form::open()
предполага методPOST
.имате
GET
в маршрутите си. променете го наPOST
в съответния маршрут.или ако искате да използвате метода
GET
, тогава добавете параметъраmethod
.напр.