0% encontró este documento útil (0 votos)
288 vistas12 páginas

Crud Laravel

El documento describe los pasos para crear un CRUD (crear, leer, actualizar, borrar) básico en Laravel utilizando el framework Laravel/UI y Bootstrap. Incluye la creación de modelos, migraciones, controladores, vistas y rutas para permitir el manejo de recursos.

Cargado por

Andre Ayala
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
288 vistas12 páginas

Crud Laravel

El documento describe los pasos para crear un CRUD (crear, leer, actualizar, borrar) básico en Laravel utilizando el framework Laravel/UI y Bootstrap. Incluye la creación de modelos, migraciones, controladores, vistas y rutas para permitir el manejo de recursos.

Cargado por

Andre Ayala
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 12

CRUS – LARAVEL

1.- composer créate-proyect laravel/laravel Proyecto

2.- php artisan make:model Alumno –mcr

3.- .env -> configurar BD y configurar archivo recién creado en Database/migrations

4.-php artisan migrate

5.- configurar controlador recién creado

Funciones:

- index ->solo muestra datos

- create -> trae los datos para mostrar(instanciados)

- store -> guarda los datos del create

- edit -> trae los datos para mostrarlos

- update -> guarda los datos del edit

- show -> muestra los detalles (un en específico) de un dato en index

6.- crear y configurar las vistas(en una carpeta a parte) – todas dentro de @section('content') menos
el form

- create.blade -> formulario instanciado

- edit.blade -> formulario trae los datos

- index.blade -> tabla

- form.blade -> formulario

LARAVEL/UI

7.- composer require laravel/ui

8.- php artisan ui bootstrap –-auth (--auth es para instalar las páginas de login quitar si no se necesita
estas paginas)

9.- npm install

10.-npm run dev

11.- en Web.php cambiar HomeController por tu controlador(creado en el paso 2) en una línea creada por
el ui
SOURCE HTML
 BOOTSTRAP
@extends('layouts.app') {{-- ESTO SE CREA RECIEN CON EL  COMANDO 8 DE LARAVEL/UI -
-}}

 TABLA
<table class="table table-light">
    <thead class="thead-light">
        <tr>
            <th>#</th>
            <th>Foto</th>
            <th>Nombre</th>
            <th>Apellido</th>
            <th>Apellido Materno</th>
            <th>Correo</th>
            <th>Acciones</th>
        </tr>
    </thead>
    <tbody> 
        @foreach ($empleados as $empleado)
        <tr>
            <td>{{$empleado->id}}</td>  
            <td><img class="img-thumbnail img-fluid" width="50px" height="50px" sr
c="{{asset('storage').'/'.$empleado->Foto}}" alt=""></td>
            <td>{{$empleado->Nombre}}</td>
            <td>{{$empleado->ApellidoPaterno}}</td>
            <td>{{$empleado->ApellidoMaterno}}</td>
            <td>{{$empleado->Correo}}</td>
            <td><a class="btn btn-warning" href="{{url('/empleado/'.$empleado-
>id.'/edit')}}">
                Editar
                </a>
                <form class="d-inline" action="{{url('/empleado/'.$empleado-
>id)}}" method="post">
                    @csrf
                    {{ method_field('DELETE') }}
                    <input class="btn btn-danger" type="submit" onclick="return co
nfirm('Quieres Borrar?')" value="Borrar">

                </form>
            </td>
        </tr> 
        @endforeach
        
    </tbody>
    <tfoot>
        <tr>
            <th></th>
        </tr>
    </tfoot>
</table>

 FORMULARIO
<div class="form-group">
<label for="Nombre">Nombre</label>
<input type="text" class="form-control" name="Nombre" id="" value="{{$empleado-
>Nombre ?? old('Nombre')}}">
</div>

<div class="form-group">
<label for="ApellidoPaterno">Apellido Paterno</label>
<input type="text" class="form-control" name="ApellidoPaterno" id="" valu
e="{{$empleado->ApellidoPaterno ?? old('ApellidoPaterno')}}">
</div>

<div class="form-group">
<label for="ApellidoMaterno">Apellido Materno</label>
<input type="text" class="form-control" name="ApellidoMaterno" id="" valu
e="{{$empleado->ApellidoMaterno ?? old('ApellidoMaterno')}}">
</div>

<div class="form-group">
<label for="Correo">Correo</label>
<input type="text" class="form-control" name="Correo" id="" value="{{$empleado-
>Correo ?? old('Correo')}}">
</div>

<div class="form-group">
<label for="Foto">Foto</label>
@if (isset($empleado->Foto))
<img class="img-thumbnail img-fluid" width="70px" height="70px" src="{{ asse
t('storage').'/'.$empleado->Foto }}" alt="">    
@endif
<input class="form-control" type="file" name="Foto" id="" value="">
</div>
<input class="btn btn-success" type="submit" value="{{$modo}} Datos">

 ERRORES CONTROLADOS(ALERTA)
@if (count($errors)>0)
    <div class="alert alert-danger" role="alert">
        <ul>
             @foreach ($errors->all() as $error)
                 <li> {{$error}} </li>
             @endforeach 
        </ul>         
    </div>    
@endif

 ACCIÓN EXITOSA
@if (Session::has('mensaje'))
    <div class="alert alert-success alert-dissmissible" role="alert">       
        {{Session::get('mensaje')}}          
    
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
        <span aria-hidden="true">&times;</span>
    </button>
</div>
    @endif

 PAGINAR(DEBAJO DE TABLA)
{!! $empleados->links() !!} {{-- AGREGAR PARA PAGINAR --}}

 FORMULARIO DE EDITAR
<form action="{{url('/empleado/'.$empleado->id)}}" method="post" enctyp
e="multipart/form-data">
@csrf

{{method_field('PATCH')}}

@include('empleado.form',['modo'=>'Editar'])

</form>

 FORMULARIO DE CREAR
<form action="{{url('/empleado')}}" method="post" enctype="multipart/form-data">
@csrf
@include('empleado.form',['modo'=>'Crear'])
</form>

SOURCE CONTROLADOR
 INDEX
$datos['empleados']=Empleado::paginate(5);
        return view('empleado.index',$datos);

 CREATE
return view('empleado.create');
 STORE
/// ESTO ES VERIFICACION DE DATOS
        $campos=['Nombre'=>'required|string|max:100',
                'ApellidoPaterno'=>'required|string|max:100',
                'ApellidoMaterno'=>'required|string|max:100',
                'Correo'=>'required|email',
                'Foto'=>'required|max:1000|mimes:jpeg,pbg,jpg'  
                ];
         $mensaje=[
             'required'=>'EL :attribute es requerido',
             'Foto.required'=>'La foto es requerida'
         ];       
         $this->validate($request,$campos,$mensaje);
         //////////////////////////////////////////////////////
$datosEmpleado= $request->except('_token');
        if($request->hasFile('Foto'))
        {
            $datosEmpleado['Foto']=$request->file('Foto')-
>store('uploads','public');
        } 
        Empleado::insert($datosEmpleado);
        return redirect('empleado')->with('mensaje','Empleado agregado con exito
');

 EDIT
$empleado=Empleado::findOrFail($empleado->id);
        return view('empleado.edit',compact('empleado'));

 UPDATE
/// ESTO ES VERIFICACION DE DATOS
        $campos=['Nombre'=>'required|string|max:100',
                'ApellidoPaterno'=>'required|string|max:100',
                'ApellidoMaterno'=>'required|string|max:100',
                'Correo'=>'required|email',                
                ];
         $mensaje=[
             'required'=>'EL :attribute es requerido',             
         ];
         if($request->hasFile('Foto'))
         {
            $campos=[ 'Foto'=>'required|max:1000|mimes:jpeg,pbg,jpg'];
            $mensaje=[ 'Foto.required'=>'La foto es requerida']; 
         }
         $this->validate($request,$campos,$mensaje);
         //////////////////////////////////////////////////////
        $datosEmpleado= $request->except(['_token','_method']);
        if($request->hasFile('Foto'))
        {
            $empleado =Empleado::findOrFail($empleado->id);
            Storage::delete('public/'.$empleado->Foto);
            $datosEmpleado['Foto']=$request->file('Foto')-
>store('uploads','public');
        } 

        Empleado::where('id','=',$empleado->id)->update($datosEmpleado);
        
        $empleado=Empleado::findOrFail($empleado->id);
        
        //return view('empleado.edit',compact('empleado'));

        return redirect('empleado')->with('mensaje','Empleado Editado');

 DESTROY
$empleado =Empleado::findOrFail($empleado->id);
        if(Storage::delete('public/'.$empleado->Foto))
        {
            Empleado::destroy($empleado->id);
        }       
        return redirect('empleado')->with('mensaje','Empleado Eliminado');

 WEB.PHP (genera todas las rutas del controlador-creado automaticamente)

Route::resource('empleado',EmpleadoController::class)->middleware('auth');

 WEB.PHP (redireccionar login a index de Controlador)


Route::group(['middleware' => 'auth'], function () {
    Route::get('/',[EmpleadoController::class,'index'])->name('home');
});

 WEB.PHP (quita el register y reset de contraseña del view de login)


Auth::routes(['register'=>false,'reset'=>false]);///Auth::routes();

 WEB.PHP (direcciona el home al index cuando esta logeado)

Route::get('/home', [EmpleadoController::class, 'index'])->name('home'); ////Route
::get('/home', [App\Http\Controllers\HomeController::class, 'index'])-
>name('home');

 ANEXOS
// php artisan make:request CreateMessageRequest --->este ultimo es nombre del req
uest

// php artisan make:controller nombreController  --->este ultimo es nombre del req
uest

// midleware , intercepta peticiones(request) de usuarios  (tienen que cumplir con 
x requerimientos)

// que es response?

// la funcion .env (donde se guardan las variables de entorno - BD )

// php artisan migrate   ////(ejecuta los archivos php para migrar de la ruta: PRU
EBA_LARAVEL_2/database/migrations) up en la funcion de php para migrar

// php artisan rollback   ////(down en la funcion de php para migrar)down en la fu
ncion de php para migrar

// php artisan migrate:refresh   ////(esto hace rollback y luego migrate)

// php artisan make:migration  create_mensajes_tabla ///// la ultima palabra es el 
nombre de migration

// php artisan make:migration  create_mensajes_tabla --create=mensaje ///// la ult
ima palabra es el nombre de la tabla y tambien crea la migración

//php artisan make:migration add_telefono_tabla_mensaje --table=mensaje ///// la u
ltima palabra es el nombre de la tabla que queremos modificar

// php artisan make:controller MensajeController --resource -->esto ultimo crea la
s funciones necesarias para un crud

//  que es la clase pdo

// REST con QUERY BUILDER   -->ya esta hecho

// REST Eloquent --> es un ORM--- busca el mismo nombre en plural y en minuscula d
el modelo--> //al hacerun insercion agrega automaticamente el creadted y updated--
> representacion de un tabla(de una BD) en una clase (que esta dentro de unaplicac
ion)

// php artisan make:model Mensaje  --->crea un modelo

// se instala nodejs  y se utuliza el comando ---> npm install //// tambien para a
ctualizar o si hay algun error --> npm update

//carpetas vendor y node_modules ---> son la dependencias instaladas de laravel y 
nodejs--> no se suben al git
// package.json  --> donde se define las dependencias de node.js

//npm run dev --> para compilar los css de los archivos app.sass y app.js de la ca
rpeta assest  //ruta webpack.mix.js

//npm run watch --> para compilar automaticamnete los css de los archivos app.scss
(sass es un procesador css) y app.js de la carpeta assest  //ruta webpack.mix.js

// npm run dev --production /// tambien optimiza (archivos styles en webpack)para 
combinar archivos css(sin procesadores graficos)--> directamente de la ruta public

// npm run production --> para minificar los css y js del proyecto

// ('resources/assets/js/app.js', 'public/js') ('resources/assets/sass/app.scss', 
'public/css') --> webpack.mix.js --> en estas rutas se debe agregar otras rutas pa
ra combinar archivos

// npm install jquery  --save --> instala jquery y lo ultimo es para registrar en 
package.json

//php artisan make:model Rol -m --> este ultimo parametro crea tambien la migracio
n

// clase collecions --> trata los arrays

// ruta config/mail.php para configuraciones con el correo

// event --> es algo q ocurrio en la app(eventos son DTO) (el evento y el listener 
priemro se registra en el EventServiceProvider)

//listeners --> reacciona al evento(se dispara despues del event)

// php artisan make:seeder UsuarioTablaSeeder (para crear un seeder -> es un tinke
r para llenar datos en BD)

// php artisan db:seed   (para ejecutar los seed creados y llenar la BD)

// php artisan db:seed  --class=UsuarioTablaSeeder  (ultimo nombre->es nombre del 
seeder, ejecutar el seed especifico)
// php artisan migrte:refresh --seed (hace el rollback luego la migracion a la  BD 
y luego el seed(llena la BD))

/// php artisan vendor:publish  --tag=laravel-pagination   /// publica(muestra en 
view) plantillas de paginacion en el proyecto

/// config/cache.php --> aqui se configura
/// metodos de cache Laravel son:  put(almacena) get(obtener) has(verifica llave) 
forget(quitar llave) flush(vaciar completamente)

/// interfaces no pueden ser instanciadas /// interfaces es solo para verificar q 
esten las  mismas funciones dentro /// no tienen nada de lógica

/// para injectar una interfaz en toda la aplicacion se debe hacerlo en AppService
Provider en la funcion boot

/// interfaz define metodo para que las clases q lo implementen lo definan tambien 
obligatoriamente para intercambiar clases concretas

/// view presenters -->  es una capa de itermediacion entre modelo y vista---> log
ica de las vistas fuera de las vistas

/// composer require predis/predis ---> para instalar la libreia de redis en el pr
oyecto

/// redis-cli (en cmd) (ping-->para recibir respuesta del servidor , keys * --> pa
ra ver los tags cache almacenados)

/// php artisan make:job nombre /////crea una clase para ejecutar tareas pesadas y 
mandarlos al queue

///php artisan queue:work      /////ejecuta la clase creada (Jobs)

///php artisan queue:failed-table ///// crea una migracion (tabla de trabajos[Jobs
] fallidos)

/// php artisan queue:work --tries=1 ///// ejecuta los la clase creada (Jobs) pero 
solo con un solo intento

/// php artisan queue:failed ///// para ver los Jobs fallidos

/// php artisan queue:flush  ///// para vaciar los datos de la tabla (failed_jobs)

// implementar el ShouldQueue para q el trabajo(funcion) balla al queue

/// php artisan queue:listen ///// para que envie(ejecute el jobs) automaticamente 
al queue
/// php artisan queue:listen --tries=1  ///// (ejecuta el jobs) automaticamente al 
queuee (solo una vez)

/// para redis(socket) ---> solo se debe implementar la clase ShouldBroadcast en u
n evento y para emitir este evento se debe utilizar(mediante) el queue  (ejecutar 
php artisan queue:listen)

//// para instalar servidor de la app (npm install -g laravel-echo-server)
/// npm install --save-dev laravel-echo socket.io-client pusher-js (para instalar 
las dependenmcias necesarias)

/// npx laravel-echo-server init (para inicializar la configuracion del servidor)

/// npx laravel-echo-server start (para prender el servidor creado)-->en la ruta d
el proyecto

/// laravel-echo-server.json --->("authHost": "http://http://127.0.0.1:8000/")  ("
devMode": true,"host": "127.0.0.1","port": "6001")

/// redis-server (para prender el servidor redis-> 1er paso ,luego laravel-echo-
server,luego el queue:listen y final el php artisan serve)

/// php artisan make:test MensajeControllerTest    ...> nombre del controlador al 
final Test

// los tets unitarios --> se ejecutan clases y metodos de forma aislada

/// test de integracion --> para probar multiples partes de la aplicacion

/// vendor\bin\phpunit tests\Integration\EloquentMensajeTest.php para probar todo 
la clase de test

// vendor\bin\phpunit --filter Hola tests\Integration\EloquentMensajeTest.php --> 
Hola es nombre de la funcion y lo otro es el path para testear una función

// php artisan migrate --database=mysql_testing ---> (para hacer una migracion en 
una BD especifica , previamente configurada en config/database.php connections)

/// test funcional --> es probar el sistema como usuario

/// php artisan make:mail ---> crear un mailable

/// php artisan storage:link ---> para enlazar la carptea storage/app/public con l
a carpeta public

/// php artisan r:l --> para ver todas las rutas del routes/web.php

// php artisan config:clear  ///// para todo lo que se trabaja con redis

// php artisan config:cache  ///////al cambiar de ruta de proyecto /// y para hace
r migrate a otra base de datos

/// para descargar los repositorios de git (composer install)
/// php artisan key:generate  (todos los proyectos laravel lo tiene -> son paras c
ookies)

/// composer create-project laravel/laravel mi-proyecto-laravel 5.5.*(pra crear el 
proyecto laravel en una ruta especifica y al final la version de laravel)

/// composer require ---> es para agregar (dependenciasde desarrollo(framework) al 
proyecto)--> lo puedes ver en composer.json (require-dev)

/// composer dump-autoload  ---> actualiza la información del cargador automático 
de clases.

//// php artisan tinker -> para usar funciones laravel en el proyecto

//// factory('App\ModelEjemplo',10)->create()  /// {(Factory)->es generador de dat
os de prueba de laravel, Faker/Generator (es una libreria de datos de prueba)} el 
primero es el  modelo del proyecto y el segundo es el numero de inserciones en la 
BD 

///CONTRASEÑA DE PRUEBA DE TODOS LOS USURIOS ES secret

/// php artisan vendor:publish --tag=laravel-mail    //// para personalizar las pl
antillas de el email 

/// php artisan vendor:publish --tag=laravel-notifications   //// para personaliza
r las plantillas de el email de las notificaciones

/// php artisan make:notification MensajeEnviado  /// para crear la notificacion e
n la carpeta app/notifications

/// php artisan event:generate  (esto crea un evento y listener previamente regist
rados en el EventServiceProvider - en la variable protected $listen )

/// npm install --> para instalar las dependencias en la ruta del proyecto -->  pa
ra instalar bootstrap , jquery ,vue, laravel-mix

/// resource/assets/js/app.js --> aqui se registra el componente vue a utilizar
//// vue --> son componentes creados para html

//// php artisan vendor:publish --tag=laravel-notification ---> para publicar toda
s las notificaciones que se crea por defecto (auth, etc )

/// Si los paquetes se registran en /bootstrap/cache/packages.php   ---> debe esta
r registrado en servisesProviders, en el fasat ->Facade

//// PARA INSTALAR SISTEMA AUTH(make:auth) EN NUEVOS LARAVEL 6 A MAS----_> compose
r require laravel/ui y luego php artisan ui vue --auth (luego npm install && npm r
un dev para agregar los estilos,js a las nuevas paginas)

También podría gustarte