Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Funciones:
6.- crear y configurar las vistas(en una carpeta a parte) – todas dentro de @section('content') menos
el form
- create.blade -> formulario instanciado
LARAVEL/UI
8.- php artisan ui bootstrap –-auth (--auth es para instalar las páginas de login quitar si no se necesita
estas paginas)
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')}}
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'));
DESTROY
$empleado =Empleado::findOrFail($empleado->id);
if(Storage::delete('public/'.$empleado->Foto))
{
Empleado::destroy($empleado->id);
}
return redirect('empleado')->with('mensaje','Empleado Eliminado');
Route::resource('empleado',EmpleadoController::class)->middleware('auth');
// que es response?
// 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
// npm run production --> para minificar los css y js del proyecto
// event --
> es algo q ocurrio en la app(eventos son DTO) (el evento y el listener priemro se
registra en el EventServiceProvider)
// 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))
/// 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
/// 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:failed ///// para ver los Jobs fallidos
/// php artisan queue:flush ///// para vaciar los datos de la tabla (failed_jobs)
/// 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 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
//// php artisan tinker -> para usar funciones laravel en el proyecto
/// 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