Yo lo que e realizado para aplicar funciones de validación mas fácil las e cargado como Helper para usarlas en cualquier lado para empezar, por ejemplo creo un Helper (validation_helper.php)
Dentro creo mi función, en tu caso.
PHP Code:
if(!function_exists('reglaMeses')){
function reglaMeses(int $mes): bool
{
if($mes<1 or $mes>12){
return FALSE;
}else{
return true;
}
}
}
Sobre el error en respuesta en idiomas (Language) creo dentro dentro de la carpeta de idioma el archivo
Validation.php
osea que quedaría el archivo con la ruta
/app/Language/es/Validation.php el cual el contenido seria para esta funcion:
PHP Code:
return [
// Rule Messages
'reglaMeses' => 'El campo {field} debe contener un mes valido.',
];
Cargo mi helper en mi BaseController que uso para todos mis controladores o en el controlado que requiera, segun tu gusto.
Y ya en mi Modulo o Controlador donde defina las validaciones lo incorporo.
Ejemplo en tu Modelo lo metemos como unas reglas personalizadas a tu gusto:
PHP Code:
protected $validando_fechas_amigusto = [
'meses' => 'required|integer|max_length[2]|reglaMeses',
'dias' => 'required|integer|max_length[2]',
'ubicacion_etc_etc' => 'required',
];
Y en mi Controlador que carga el Modelo con las reglas definidas previamente, en la funcion o pagina que lo requiera ya sea post o get, (en mi caso Post) lo valido asi por ejemplo
PHP Code:
//Controlador XYZ en el Construct llamo mi modelo
public function __construct()
{
//Load
$this->mimodulodefinidoatugusto = new \App\Models\mimodelo();
// Alternativa a cargar el Modelo
//$this->mimodulodefinidoatugusto = model('App\Models\mimodelo', false);
}
PHP Code:
//Controlador XYZ
public function mipagina()
{
if ($_POST) {
//SI no pasa la validacion mando un error para algun popup o funcion que recoga y muestre errores
if (!$this->validate($this->mimodulodefinidoatugusto->validando_fechas_amigusto)) {
$content = [
'msj' => langv2('Error.some_entry_needs_to_be_corrected'),
];
//Regreso a la pagina anterior y le cargo el error
return redirect()->back()->withInput()->with('error', $content);
}
///SI paso la validacion ejecuto lo que requiera con los datos.
else {
//Recupero mis valores y ya los utilizo como quiera
$mes = $this->request->getPost('mes');
$dia = $this->request->getPost('dia');
}
}
Y en mi plantilla de vista que esta dentro de la carpeta view cargo la funcion de validator
PHP Code:
$validation = service('validation')
Y en mis field de forms la uso asi
PHP Code:
if ($validation->hasError('meses'))
{
echo $validation->getError('meses');
}
Espero te sirva. Saludos