Recuerda que en las ciencias informáticas un problema casi siempere suele tener diferentes resoluciones, no obstante aquí mostramos lo más óptimo y eficiente.
Solución:
La forma en que lo haría
Si su formulario es (2 botones):
Form::open(array('url' => 'test/auth'))
Form::email('email')
Form::password('password')
Form::password('confirm_password')
Form::close()
Cree un controlador ‘TestController’
Agregar una ruta
Route::post('test/auth', array('uses' => '[email protected]'));
En TestController tendría un método que verifica en qué envío se hizo clic y otros dos métodos para iniciar sesión y registrarse
postLogin(); //if login then use this method
elseif(Input::get('register'))
$this->postRegister(); //if register then use this method
public function postLogin()
echo "We're logging in";
//process your input here Input:get('email') etc.
public function postRegister()
echo "We're registering";
//process your input here Input:get('email') etc.
?>
Mi solución:
primero configuro el formulario sin acción
Form::open(array('url' => '', 'id'=> 'test-form'))
Form::text('username')
Form::password('password')
Form::password('confirm_password')
Form::close()
para rutas (route.php):
Route::post('test/login', array('uses' => '[email protected]'));
Route::post('test/register', array('uses' => '[email protected]'));
controlador (TestController.php)
public function login()
//do something...
public function register()
//do something...
Jquery: (prueba.js)
$('form :submit').on('click', function(event)
var a = $(this);
var form = $('form');
var action = a.attr('id');
form.attr('action', baseUrl + '/test/' + action);
form.submit();
);
La respuesta de ClickCoder es acertada, lo único que reemplazaría, para hacerlo de una manera 100% “pura Laravel” sería usar el Creador de formularios para los botones de envío también.
http://laravel.com/docs/4.2/html#buttons
El primer parámetro es el valor del envío y puede pasar su nombre en las siguientes opciones array.
Entonces en lugar de:
Harías:
Form::submit('Login', ['name' => 'login'])
Form::submit('Register', ['name' => 'register'])
Si lo desea, puede escapar de la declaración if al hacer que compartan el mismo nombre y hacer algo como esto:
html:
Form::submit('Login', ['name' => 'action'])
Form::submit('Register', ['name' => 'action'])
php:
public function postAuth()
$action = 'post' . Input::get('action'); //becomes either postLogin or postRegister
$this->$action();
¡Un poco menos de anidación, un poco más de Laravel!
Nos encantaría que puedieras dar visibilidad a este enunciado si te valió la pena.