laravel lanzando MethodNotAllowedHttpException
Estoy tratando de conseguir algo muy básico en funcionamiento. Estoy acostumbrado a CI y ahora estoy aprendiendo Laravel 4, y sus documentos no lo hacen fácil. De todos modos, estoy tratando de crear un formulario de inicio de sesión y sólo asegurarse de que los datos se publican con éxito mediante la impresión en el siguiente formulario. Estoy recibiendo esta excepción:
Symfony Component HttpKernel Exception
MethodNotAllowedHttpException
y mi 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');
}
}
y rutas tiene:
Route::get('/', function()
{
return View::make('hello');
});
Route::get('/members', 'MemberController@index');
Route::get('/validate', 'MemberController@validateCredentials');
y finalmente mi vista login.php tiene esta dirección de formulario:
<?php echo Form::open(array('action' => 'MemberController@validateCredentials')); ?>
Cualquier ayuda será muy apreciada.
102
3
El error se debe a que está enviando información a una ruta
GET
.Yo dividiría tu enrutamiento para
validar
en rutasGET
yPOST
separadas.Nuevas rutas: ``php Route::post('validate', 'MemberController@validateCredentials');
Route::get('validate', function () { return View::make('members/login'); });
Mi sospecha es que el problema está en la definición de tu ruta.
Usted definió la ruta como una solicitud
GET
pero el formulario probablemente está enviando una solicitudPOST
. Cambia la definición de tu ruta.``php Route::post('/validate', 'MemberController@validateCredentials');
En el formulario utiliza lo siguiente
por defecto,
Form::open()
asume un métodoPOST
.Si tienes
GET
en tus rutas, cámbialo porPOST
en la ruta correspondiente.o si quieres usar el método
GET
, entonces añade el parámetromethod
.Por ejemplo