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.

El error se debe a que está enviando información a una ruta GET.

Yo dividiría tu enrutamiento para validar en rutas GET y POST separadas.

Nuevas rutas: ``php Route::post('validate', 'MemberController@validateCredentials');

Route::get('validate', function () { return View::make('members/login'); });


Entonces tu método del controlador podría ser simplemente

```php
public function validateCredentials()
{
    $email = Input::post('email');
    $contraseña = Input::post('contraseña');
    return "Correo electrónico: " . $correo electrónico . " y Contraseña: " . $contraseña;
}
Comentarios (0)

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 solicitud POST. Cambia la definición de tu ruta.

``php Route::post('/validate', 'MemberController@validateCredentials');


Generalmente es mejor práctica usar rutas con nombre (ayuda a escalar si el método/clase del controlador cambia).
```php
Route::post('/validate', array(
    'as' => 'validate',
    'uses' => 'MemberController@validateCredentials'
));

En el formulario utiliza lo siguiente

``Formulario::open(array('route' => 'validate')); ``;
Comentarios (0)
php echo Form::open(array('action' => 'MemberController@validateCredentials'); >

por defecto, Form::open() asume un método POST.

Si tienes GET en tus rutas, cámbialo por POST en la ruta correspondiente.

o si quieres usar el método GET, entonces añade el parámetro method.

Por ejemplo

Form::open(array('url' => 'foo/bar', 'method' => 'get'))
Comentarios (0)