Cómo hacer un Registrar en Laravel

3
Average: 3 (2 votes)
Hola comunidad, por acá les explico como hacer un registro en laravel lo cual es muy sencillo.

BASE DE DATOS
Como ustedes saben en la base de datos debe existir la tabla users para el tema de los usuarios, solamente esta tabla es requerida asi como su nombre lo especifica, puedes tener otra que controle los usuarios pero seria complicado a la hora de configurar el framework para poder trabajar con la misma, por lo que se recomienda usar esta misma. Como es de costumbre entonces se tiene:

MODELO
El modelo para esta tabla es el modelo user (en singular) como lo ven: Aqui el ejemplo: de como sería.
/models/User.php

<?php
use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;

class User extends Eloquent implements UserInterface, RemindableInterface
{

    use UserTrait, RemindableTrait;
    protected $table = 'users';
    protected $hidden = array('password','confirm', 'remember_token');  
}
....
Como pueden ver existe el atributo $table que especifica la tabla de la Base de datos a la que hace referencia Laravel, laravel es mágico, el entiende todo a partir de ahi.
el atributo $hidden dice que siempre oculte los campos de la tabla que se especifican en el array de elementos por lo que es muy propio para temas de seguridad etc.
y como ven el atributo $timestamps no se encuentra presente puesto que la tabla contiene las columnas CreateAt y ModificatedAt que son propias de la creación de la tabla desde laravel, si usted desea que su tabla de usuarios no tenga esas columnas pues especifica el atributo $timestamps=false

....
VISTA
Explicaré esto basándome sencillamente en una vista normal, es decir sin usar herencia ni nada ya eso son otros temas la cuestión es ver como funcionan los campos aca en la vista y su interacción con el controlador, y las rutas.
ejemplo: registrar.blade.php

...Código html anterior o blade dependiendo de como hagas la vista....

{{Form::open(array('route'=>'registrar','class'=>'well well-sm', 'id'=>'regmodalform','autocomplete'=>'off'))}}
        <table>
                    <tr>
                        <td><label>Nombre y apellidos</label></td>
                        <td><input  type="text" name="nombre" placeholder="Escriba su nombre completo" autofocus></td>
                    </tr>
                    <tr>
                        <td><label>Usuario</label></td>
                        <td><input type="text" name="usuario" autocomplete="off" placeholder="Escriba su nombre de usuario"></td>
                    </tr>
                    <tr>
                        <td><label>Contrase&ntilde;a</label></td>
                        <td><input type="password" name="clave" autocomplete="off" placeholder="Escriba su contrase&ntilde;a"></td>
                    </tr>
                                      <tr>
                        <td><label>Correo electr&oacute;nico</label></td>
                        <td><input type="email" name="correo" placeholder="Escriba su correo electr&oacute;nico"></td>
                    </tr>
                        </table>
        <br>
        <input type="submit" value="Registrar">
</form>
...Fin del documento html o blade...

Como puedes ver existe formas de hacer las etiquetas con blade como le especifiqué en el {{Form::open(..)}} que es lo mismo que <form ....> Asi mismo es con lo demas de formularios, ejemplo Form::text(..) etc etc...

Ahora.. El form hace un post a una ruta llamada registrar esto es lo mismo que poner lo siguiente en html convencional
<form action="{{URL::to(registrar)}}" method="post"> pero lo q pasa es q se usa la sentencia route porque se usan alias, ver la parte de rutas para entender mejor esto pero es muy sencillo y util por lo que de esta forma no funcionará. use route siempre q pueda es más útil.

RUTA
route.php

Route::any('registrar',['as'=>'registrar','uses'=>'login@create']);

Como ves se usa any, y el array [] como segundo parámetro de la ruta.
any: Especifica que la ruta se puede llamar lo mismo por get que con post, es bueno usar esto cuando quieres cargar una vista antes de entrar datos y luego q entres los datos llamar a la misma ruta para hacer lo que hace el controlador, asi ahorras codigo en las rutas y se hace más eficiente.
[]: El segundo parámetro de las rutas puede ser o una función o una llamada a una funcion de un controlador " ' login@create ' " o un arreglo para usar alias que es el ejemplo anterior. Esto quiere decir que cuando se llame a la ruta por route puedes usar registrar como nombre de ruta, en este caso es el mismo de la ruta pero no es necesario.

CONTROLLER
<?php

class login extends BaseController
{
public function create()
    {
        if (Auth::check()) {
            return Redirect::to('/');
        }
        if (Request::method() == "POST") {
                $user = new User();
                $user->rol = 'Usuario';
                $user->username = Input::get('usuario');
                $user->password = Hash::make(Input::get('clave'));
                $user->email = Input::get('correo');
                $user->name = Input::get('nombre');
                $user->save();
               //LUEGO DE REGISTRAR LOS DATOS VOY A ALGUN LADO
               return Redirect::to('/');
        } else
            return View::make('login.registrar');
    }
}

Como ves es un ejemplo sencillo, aca no se muestran estilos en las vistas (CSS) ni validaciones ni nada de eso, solo es para que entiendas el flujo de laravel q es muy sencillo para registrar un usuario.

Espero les sea de ayuda.. Atentamente!!










 
Categoría: