validaciones

This commit is contained in:
cmoreno 2026-06-08 19:49:59 -03:00
parent 0b45dd67a5
commit 9d9b6c5be9
6 changed files with 89 additions and 39 deletions

View File

@ -35,7 +35,7 @@ class CategoriasController extends Controller
public function destroy(Request $request, $id){
$categorias = Categorias::findOrfail($id);
$categorias->delete();
$request->session()->flash('mensaje-success', 'La categoría fue eliminada.');
$request->session()->flash('mensaje-success', 'La categoría fue eliminada.');
return redirect('/categorias');
}
@ -47,23 +47,29 @@ class CategoriasController extends Controller
public function store(Request $request){
$request->validate([
'descripcion' => 'required|max:20|',
'nombre' => 'required|unique:categorias,nombre',
],
'descripcion' => 'required|max:20',
'nombre' => 'required|unique:categorias,nombre|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/|max:20',
//'dni' => 'required|numeric|digits_between:7,8',
],
[
'descripcion.required' => 'el campo descripcion debe ser requerido',
'descripcion.max' => 'el campo descripcion debe contener maximo 10 caracteres',
'nombre.required' => 'el campo nombre es requerido',
'nombre.unique' => 'ya existe una categoria con ese nombre'
'descripcion.max' => 'el campo descripcion debe contener maximo 20 caracteres',
'nombre.required' => 'el campo nombre es requerido',
'nombre.unique' => 'el campo nombre no se puede repetir',
'nombre.regex' => 'el campo nombre solo debe contener letras',
'nombre.max' => 'el campo nombre debe contener un maximo de 20 caracteres',
]
);
$categorias = new Categorias();
$categorias->fill([
'nombre' => $request->input('nombre'),
'descripcion' => $request->input('descripcion'),
]);
$categorias->save();
$request->session()->flash('mensaje-success', 'La categoría fue agregada.');
return redirect('/categorias');
}
@ -80,6 +86,7 @@ class CategoriasController extends Controller
'descripcion' => $request->input('descripcion'),
]);
$categorias->update();
$request->session()->flash('mensaje-success', 'La categoría fue modificada.');
return redirect('/categorias');
}
@ -90,35 +97,5 @@ class CategoriasController extends Controller
return redirect('/categorias');
}
/*
public function show($id){
$categorias = Categorias::findOrfail($id);
return view('categorias.show', ["cat"=>$categorias]);
}
public function edit($id){
$categorias = Categorias::findOrfail($id);
return view('categorias.edit', ["cat"=>$categorias]);
}
public function update(Request $request, $id){
$categorias = Categorias::findOrfail($id);
$categorias->fill([
'nombre' => $request->input('nombre'),
'descripcion' => $request->input('descripcion'),
]);
$categorias->update();
return redirect('/categorias');
}
*/
}

View File

@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreCategoriaRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
//
];
}
}

View File

@ -0,0 +1,40 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdatedCategoriaRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'nombre' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/|max:20|unique:categorias,nombre,' . $this->route('categoria') . ',id_categoria',
'descripcion' => 'required'
];
}
public function messages() {
return [
'nombre.required' => 'el campo nombre es requerido',
'nombre.regex' => 'el campo nombre solo debe contener letras',
'nombre.max' => 'el campo nombre debe contener un maximo de 20 caracteres',
'nombre.unique' => 'ya existe una categoria con este nombre',
'descripcion' => 'el campo descripcion es requerido'
];
}
}

View File

@ -33,7 +33,12 @@
<!-- form-check-label => clase de Bootstrap que estiliza etiquetas de formulario -->
<label for="nombre" class="form-check-label">Nombre (*)</label>
<!-- form-control => aplica estilos consistentes al input-->
<input type="text" name="nombre" id="nombre" value="{{old('nombre')}}" required class="form-control" >
<input type="text"
name="nombre"
id="nombre"
value="{{ old('nombre') }}"
required
class="form-control">
</div>
<div class="form-group col-md-3">

View File

@ -30,7 +30,7 @@
<!-- navbar-light => estilo de texto oscuro sobre fondo claro -->
<!-- bg-light => fondo gris claro -->
<nav class="navbar navbar-expand-lg bg-light">
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<!-- Nombre de la aplicación -->
<a class="navbar-brand" href="{{ url('/') }}">