Está en la página 1de 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" src="{{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 confirm('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="" value="{{$empleado-
>ApellidoPaterno ?? old('ApellidoPaterno')}}">
</div>

<div class="form-group">
<label for="ApellidoMaterno">Apellido Materno</label>
<input type="text" class="form-
control" name="ApellidoMaterno" id="" value="{{$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="{{ asset('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" enctype="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 request

// php artisan make:controller nombreController ---


>este ultimo es nombre del request

// 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 ultima palabra es el nombre de la tabla y tambien crea la
migración

//php artisan make:migration add_telefono_tabla_mensaje --


table=mensaje ///// la ultima palabra es el nombre de la tabla que queremos modifi
car

// php artisan make:controller MensajeController --resource --


>esto ultimo crea las 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 del 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 actualizar 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 carpeta assest //
ruta webpack.mix.js

//npm run watch --


> para compilar automaticamnete los css de los archivos app.scss(sass es un proces
ador 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 para 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 migracion

// 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 tinker 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---
> logica de las vistas fuera de las vistas

/// composer require predis/predis ---


> para instalar la libreia de redis en el proyecto

/// redis-cli (en cmd) (ping-->para recibir respuesta del servidor , keys * --
> para 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 un evento y para emitir est
e 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 del 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 conf
ig/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 la 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 cookies)

/// composer create-project laravel/laravel mi-proyecto-


laravel 5.5.*(pra crear el proyecto laravel en una ruta especifica y al final la v
ersion 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 datos de prueba de laravel, Faker/Generator (es una libreria de d
atos de prueba)} el primero es el modelo del proyecto y el segundo es el numero d
e inserciones en la BD

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

/// php artisan vendor:publish --tag=laravel-


mail //// para personalizar las plantillas de el email

/// php artisan vendor:publish --tag=laravel-


notifications //// para personalizar las plantillas de el email de las notificac
iones

/// 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 --
> para 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 todas las notificaciones que se crea por defecto (auth, etc )

/// Si los paquetes se registran en /bootstrap/cache/packages.php ---


> debe estar registrado en servisesProviders, en el fasat ->Facade

//// PARA INSTALAR SISTEMA AUTH(make:auth) EN NUEVOS LARAVEL 6 A MAS----


_> composer require laravel/ui y luego php artisan ui vue --
auth (luego npm install && npm run dev para agregar los estilos,js a las nuevas pa
ginas)

También podría gustarte