Initial commit: Lash Vanshy - Complete project with admin panel, gallery, products, and contact
This commit is contained in:
55
app/Http/Requests/ProductoRequest.php
Executable file
55
app/Http/Requests/ProductoRequest.php
Executable file
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class ProductoRequest extends FormRequest
|
||||
{
|
||||
public function authorize(): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function rules(): array
|
||||
{
|
||||
$rules = [
|
||||
'nombre' => ['required', 'string', 'max:255'],
|
||||
'descripcion' => ['required', 'string', 'max:5000'],
|
||||
'precio' => ['required', 'numeric', 'min:0', 'regex:/^\d+(\.\d{1,2})?$/'],
|
||||
'imagen' => ['nullable', 'image', 'mimes:jpeg,png,gif,webp', 'max:10240'],
|
||||
'categoria' => ['required', 'string', 'max:100'],
|
||||
'destacado' => ['nullable', 'boolean'],
|
||||
'activo' => ['nullable', 'boolean'],
|
||||
'orden' => ['nullable', 'integer', 'min:0'],
|
||||
];
|
||||
|
||||
// En actualización, imagen no es obligatoria
|
||||
if ($this->isMethod('PATCH') || $this->isMethod('PUT')) {
|
||||
$rules['imagen'] = ['nullable', 'image', 'mimes:jpeg,png,gif,webp', 'max:10240'];
|
||||
}
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function messages(): array
|
||||
{
|
||||
return [
|
||||
'nombre.required' => 'El nombre es obligatorio.',
|
||||
'nombre.max' => 'El nombre no puede exceder 255 caracteres.',
|
||||
'descripcion.required' => 'La descripción es obligatoria.',
|
||||
'descripcion.max' => 'La descripción no puede exceder 5000 caracteres.',
|
||||
'precio.required' => 'El precio es obligatorio.',
|
||||
'precio.numeric' => 'El precio debe ser un número válido.',
|
||||
'precio.min' => 'El precio no puede ser negativo.',
|
||||
'precio.regex' => 'El precio debe tener como máximo 2 decimales.',
|
||||
'imagen.image' => 'La imagen debe ser un archivo de imagen.',
|
||||
'imagen.mimes' => 'El formato de imagen no es válido.',
|
||||
'imagen.max' => 'La imagen no puede exceder 10MB.',
|
||||
'categoria.required' => 'La categoría es obligatoria.',
|
||||
'categoria.max' => 'La categoría no puede exceder 100 caracteres.',
|
||||
'orden.integer' => 'El orden debe ser un número entero.',
|
||||
'orden.min' => 'El orden no puede ser negativo.',
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user