Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Laravel es uno de los frameworks de código abierto más fáciles de asimilar para PHP.
Es simple, muy potente y tiene una interfaz elegante y divertida de usar. Fue creado en
2011 y tiene una gran influencia de frameworks como Ruby on Rails, Sinatra y ASP.NET
MVC.
Instalando php:
Para ello ingresar a Windows php: https://windows.php.net/download/
Nos bajamos el instalador de php los descomprimimos y copiamos en nuestra carpeta www
de nuestro apache.
Renombramos luego nuestro php.ini devemlovet a ini nada mas
Configurando en php.ini
En hay cambiamos en: extenciones_dir=“c:/www/php8/ext”
Por último configuramos en apache config en la parte final la siguiente
carpeta.
https://dev.mysql.com/downloads/file/?id=520407
Nos bajamos el
software
Luego de eso instalamos phpmyadmin bajamos la versión 5.2
https://www.phpmyadmin.net/
<?php
$host='localhost';
$user='root';
$password='admin123';
$db='prueba1';
$conection=@mysqli_connect($host,$user,
$password,$db);
if(!$conection){
echo "error en la conexion";
}else{
echo "conexion lograda por Javier ";
}
?>
Instalando nuestro NODE JS Y GIT ABAS
CONFIGURANDO NUESTRO VISUALCODE
Instalando extensiones:
https://getcomposer.org/download/
Composer self-update
https://developer.mozilla.org/es/docs/Web/HTTP/Methods
route::get("/usuarios",function()
{
return response ("Lista de usuarios");
});
Route::get("/usuario",function(Request
$request)
{
$nombre =$request->get('nombre');
$apellidos=$request->get('apellido');
$saludo= "Hola, bienvenido: ".$nombre. " ".
$apellidos;
return response ("$saludo");
});
Para la corrección del error del método get por medio de route:
Deseo la url, el reporte de ventas del 2023 y después del 2022
route::get('/reporte/ventas/2023',function()
{
return response("Reporte de ventas 2023");
});
Route::get("/usuario",function(Request $request)
{
$nombre =$request->get('nombre');
$apellidos=$request->get('apellido');
$saludo= "Hola, bienvenido: ".$nombre. " ".$apellidos;
return response ($saludo);
});
route::get("/productos",function()
{
return "este es la lista de productos";
});
route::get('/reporte/ventas/{anio}/{mes}',function($anio,$mes)
{
$texto="Reporte de ventas del : ".$anio." y el mes es: ".$mes;
return response($texto);
});
<!DOCTYPE html>
<html lang="en">
route::get('/reporte/inventario/{anio}', function($anio) <head>
{ <meta charset="UTF-8">
$inventario=[ <meta name="viewport" content="width=device-width,
[ initial-scale=1.0">
'producto'=>'Martillo de construcción', <meta http-equiv="X-UA-Compatible" content="ie=edge">
'precio'=>60, <title>Document</title>
], </head>
[ <body>
'producto'=>'Cemento Yura ',
'precio'=>20, <h1> reporte del año <?php echo $anio;?></h1>
],
[ <table>
'producto'=>'Calamina', <thead>
'precio'=>35, <tr>
<th>Producto</th>
], <th>precio</th>
</tr>
]; </thead>
return view("inventario",[ <tbody>
<tr>
'anio'=>$anio, <td>? </td>
'productos'=>$inventario, <td>? </td>
]); </tr>
}); </tbody>
</table>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<table>
<thead>
<tr>
<th>Producto</th>
<th>precio</th>
</tr>
</thead>
<tbody>
<?php foreach ($productos as $item):?>
<tr>
<td>{{$item['producto']}} </td>
<td>{{$item['precio']}} </td>
</tr>
<?php endforeach;?>
</tbody>
</table>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<table>
<thead>
<tr>
<th>Producto</th>
<th>precio</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{$item['producto']}} </td>
<td>{{$item['precio']}} </td>
</tr>
@endforeach
</tbody>
</table>
</body>
</html>
Creando controladores, que es la forma normal de crear variables e ingresamos la línea
de comando para crear un controlador:
});
}
Ahora si queremos modificar una columna en nuestra tabla curso tendríamos que crear otra migración
como así:
Luego de eso migramos para que los cambios en mi tabla curso sean efectivas:
Si queremos deshacer nuestra migración utilizaremos nuestro rollback que permitirá deshacer la
ultima acción verificar en la tabla migration del mysql:
Después descomprimir y bajar exactamente solo las carpetas “dist” y “plugins”; luego de eso lo pegas en la carpeta
public en laravel.
Luego de eso creamos nuestro controlador : php artisan make: controller DashboradController
return view('dashboard');
}
Luego en routes/web.php
route::get('/dashboard',[\App\Http\Controllers\DashboardController::class,'index']);
Luego una vez creado visualizamos las rutas que tenemos disponibles excepto vendors de
laravel para eso :
route::resource('/dashboard/categoria',\App\Http\Controllers\CategoriaController::class);
Views/Layout Dashboard/categoria
Formulario-búsqueda para crea nuestro scrip
Para utilizar axios tengo que pegar en mi layout porque voy a utilizar en todas mis paginas
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
route::get('/dashboard/categoria/search',[\App\Http\Controllers\
CategoriaController::class,'search'])->name('categoria.search');
luego creamos nuestro controlador search >>>> y finalmente creamos nuestra vista search
public function search()
{
Index.Blade.php Search.Blade.php
Web.php
return view('dashboard.categoria.search', [
'listado' => $listado
]);
}
Index.Blade.php @extends('layouts.app')
@section('titulo')
Categorias de curso Laravel
@endsection
@section('contenido')
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<div class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1 class="m-0">Categorías de cursos</h1>
</div><!-- /.col -->
</div><!-- /.row -->
</div><!-- /.container-fluid -->
</div>
<!-- /.content-header -->
@routes
Luego de eso revisamos nuestras rutas para crear en: php artisan route:list --path=categoria
Luego agregamos en nuestra función modalCrear() la siguiente ruta:
function modalCrear() {
const ruta=route('categoria.create');//ziggi-laravel
axios.get(ruta){
.then(function(respuesta)){
const contenido_modal =respuesta.data;
$('#modal-agregar-contenido').html(contenido_modal);
$('#modal-agregar').modal('show');
}
}
.catch(function(error))
{
if(error.response)
{
//400,500
const menssage_error=error.response.data.message;
toastr.error(message_error);
}else{
toastr.error("error al cargar formulario de registro")
}
}
}
Nos vamos a nuestro controlador y creamos nuestro control:
<div class="modal-header">
<h4 class="modal-title">Registrar categoría de curso</h4>
</div>
<form action="" id="formulario-crear" autocomplete="off">
<div class="modal-body">
<div class="form-group row">
<label class="col-sm-4 col-form-label" for="nombre">Nombre</label>
<div class="col-sm-8">
<input type="text" name="nombre" id="nombre" class="form-control" />
</div>
</div>
<div class="form-group row">
<label class="col-sm-4 col-form-label" for="descripcion">Descripción</label>
<div class="col-sm-8">
<input type="text" name="descripcion" id="descripcion" class="form-control" />
</div>
</div>
<div class="form-group row">
<label class="col-sm-4 col-form-label" for="activo">¿Activo?</label>
<div class="col-sm-8">
<input type="checkbox" value="1" name="activo" id="activo" class="form-control" />
</div>
</div>
</div>
<div class="modal-footer justify-content-between">
<button type="button" class="btn btn-default" data-dismiss="modal"><i class="fas fa-window-close"></i> Cerrar
</button>
<button id="btn-submit" type="submit" class="btn btn-primary"><i class="fas fa-save"></i>
Registrar</button>
</div>
</form>
<script>
document.getElementById('formulario-crear').addEventListener('submit', function(evento){
evento.preventDefault();
guardar();
});
</script>
Nos vamos a programar en nuestra función guardar del index.Blade.php
function guardar() {
const ruta = route('categoria.store');
const formulario = document.getElementById('formulario-crear');
const data = new FormData(formulario); // javascript
if (document.getElementById('activo').checked === false) {
data.append("activo", "0");
}
// data.append("nombre", document.getElementById('nombre').value);
// data.append("descripcion", document.getElementById('descripcion').value);
// data.append("descripcion", document.getElementById('descripcion').value);
// javascript
axios.post(ruta, data)
.then(function(respuesta) {
const message = respuesta.data.message;
toastr.success(message);
$('#modal-agregar').modal('hide');
search(); // segunda peticion
})
.catch(function(error) {
if (error.response) {
// 400,500
const message_error = error.response.data.message;
toastr.error(message_error);
// validacion
if (error.response.status === 422) {
mostrarErrores('formulario-crear', error.response.data.errors)
}
} else {
// error de código
toastr.error("Error al intentar guardar categoría")
}
});
}
Luego nos vamos a nuestro control Store para guardar
$data=[
'message'=>'Categoría resgistrada Correctamente'
];
return response ()->json($data,201);
}catch(\Throwable $error)
{
$data=[
'message'=>'Error de sistema, contactar con soporte'
];
return response()->json($data,500);
}
}