Nuevo sistema de gestión de CSS personalizado con panel admin: - Admin/CustomCSSManager: CRUD de snippets CSS (crítico/diferido) - Public/CustomCSSManager: Inyección dinámica en frontend - Schema JSON para configuración del componente Migración de CSS estático a BD: - Tablas APU (~14KB) → snippet diferido en BD - Tablas Genéricas (~10KB) → snippet diferido en BD - Comentadas funciones legacy en enqueue-scripts.php Limpieza de archivos obsoletos: - Eliminado build-bootstrap-subset.js - Eliminado migrate-legacy-options.php - Eliminado minify-css.php - Eliminado purgecss.config.js Beneficios: - CSS editable desde admin sin tocar código - Soporte crítico (head) y diferido (footer) - Filtrado por scope (all/home/single/archive) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
51 lines
1.4 KiB
PHP
51 lines
1.4 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace ROITheme\Shared\Domain\Exceptions;
|
|
|
|
/**
|
|
* Excepción de dominio para errores de validación
|
|
*
|
|
* Usada cuando las reglas de negocio no se cumplen.
|
|
* Ubicada en Shared porque es usada por múltiples bounded contexts.
|
|
*/
|
|
final class ValidationException extends \DomainException
|
|
{
|
|
/**
|
|
* @param string $message Mensaje descriptivo del error de validación
|
|
* @param int $code Código de error (default 0)
|
|
* @param \Throwable|null $previous Excepción anterior para encadenamiento
|
|
*/
|
|
public function __construct(
|
|
string $message,
|
|
int $code = 0,
|
|
?\Throwable $previous = null
|
|
) {
|
|
parent::__construct($message, $code, $previous);
|
|
}
|
|
|
|
/**
|
|
* Factory: Campo requerido faltante
|
|
*/
|
|
public static function requiredField(string $fieldName): self
|
|
{
|
|
return new self("El campo '{$fieldName}' es requerido");
|
|
}
|
|
|
|
/**
|
|
* Factory: Valor inválido
|
|
*/
|
|
public static function invalidValue(string $fieldName, string $reason): self
|
|
{
|
|
return new self("Valor inválido para '{$fieldName}': {$reason}");
|
|
}
|
|
|
|
/**
|
|
* Factory: Longitud excedida
|
|
*/
|
|
public static function maxLengthExceeded(string $fieldName, int $maxLength): self
|
|
{
|
|
return new self("El campo '{$fieldName}' excede el máximo de {$maxLength} caracteres");
|
|
}
|
|
}
|