laravel-crud-builder

La mayoría de nuestros proyectos utilizan modelos, vistas, controladores, entre otros archivos comunes. Qué mejor forma de ahorrar tiempo si los pudiéramos generar, pues sí, en este post quiero mostrar una forma distinta de crear todos los archivos necesarios para un simple CRUD  (Create, Read, Update y Delete), en menos de lo que canta un gallo utilizando el paquete laravel-api-generator.

Para comenzar primero que nada, su instalación. Coloca la siguiente línea en tu composer.json:

"require": {
    "mitulgolakiya/laravel-api-generator": "1.3.*"
}

Luego en la consola:

composer update

Siguiente paso, agrega en el archivo config/app.php los siguientes providers:

'Illuminate\View\ViewServiceProvider',
'Illuminate\Html\HtmlServiceProvider',
'Laracasts\Flash\FlashServiceProvider',
'Mitul\Generator\GeneratorServiceProvider'

y los siguientes alias:

'Form'  => 'Illuminate\Html\FormFacade',
'HTML'  => 'Illuminate\Html\HtmlFacade',
'Flash' => 'Laracasts\Flash\Flash'

Por último, de nuevo en la consola, para generar nuestro archivo de configuarción:

php artisan vendor:publish --provider="Mitul\Generator\GeneratorServiceProvider"

Perfecto. Ya podemos comenzar a generar archivos. Para el ejemplo, vamos crear un simple directorio de alumnos,  por ahora vamos a utilizar el siguiente comando más el nombre del modelo, que en este caso será Student:

php artisan mitul.generator:scaffold Student

inmediatamente aparecerá lo siguiente:

C:\wamp\www\test>php artisan mitul.generator:scaffold Student
Specify fields for the model (skip id & timestamp fields, will be added automatically)
Left blank to finish
Field:

Muy bien, ahora debemos agregar los campos:

  • El primer parámetro es el nombre del campo.
  • El segundo, el tipo de campo.
    • Si este lleva atributos se separan por una «,» (coma)
  • Tercer y demás son los comando adicionales
    • Si este lleva atributos se separan por una «,» (coma)
    • Ej: name:string,255:nullable
  • Los parámetros se separan por «:«(dos puntos)

Ok, comencemos. El campo para el nombre:

Field: name:string:nullable

luego solicitará sus validaciones, vamos a colocar que sea requerido:

Enter validations: required

Este proceso se repite con los demás campos.

Para el email:

Field: email:string:unique:required
Enter validations: required|unique:students

Nota: las validaciones son separadas con un «|«.

Para el teléfono:

Field: phone:string:required
Enter validations: required

Para la dirección:

Field: address:text:nullable
Enter validations: max:300

Listo,  continuamos dando Enter. Nos muestra si queremos crear un repositorio (Es opcional), pueden seleccionar «y» o «n».

Do you want to generate repository ? (y|N)

Al elegir, veremos lo siguiente:

Migration created: 
2015_05_11_050213_create_students_table.php

Model created: 
Student.php

Request created: 
CreateStudentRequest.php

Controller created: 
StudentController.php

Views created: 
field.blade.php created
index.blade.php created
show.blade.php created
create.blade.php created
edit.blade.php created

routes.php modified:
"students" route added.

Wow, se ha creado la migración, el modelo, un request, el controlador, las vistas y además se han agregado las rutas, interesante ¿verdad?. Por último nos pregunta si queremos correr la migración:

Do you want to migrate database? [y|N]

Nota: recuerda tener configurada tu Base de datos para poder correr la migración.

Al aceptar, vemos:

Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table
Migrated: 2015_05_11_051610_create_students_table

Perfecto, ¿listo para probar y ver si es cierto?. Puedes dirigirte a la ruta   http://nombre_de_tu_proyecto/students

 

Anímate a crear un estudiante y probar las validaciones del formulario.

Si obtienes un error similar a «View common.errors not found» debes crear un archivo llamado errors.blade.php en la carpeta views/common

@if($errors->any())
    <ul class="alert alert-danger" style="list-style-type: none">
        @foreach($errors->all() as $error)
            <li>{!! $error !!}</li>
        @endforeach
    </ul>
@endif

 

¿Qué te ha parecido?. Recuerda dejar tu opinión en la sección de comentarios o compartir el post en tus redes sociales.

Lecturas recomendadas:

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Tinker, la consola de comandos de Laravel Lección siguiente Uso del método renderSections() con Query AJAX y formato Json