Welcome Guest, Not a member yet? Register   Sign In
required|max_length is not a valid rule.
#1

(This post was last modified: 07-07-2021, 01:26 PM by dremy_kelupallun.)

Hi, I am trying to use codeigniter rules.
I have a validation at the js level, and now I am applying at the php level.
When validating, it prints this message:
required|maxlength is not a valid rule.
Sorry for my english, i'm chilean.

My controller code:

Code:
<?php namespace App\Controllers\Viaticos;

    class Ctrl_viaticos extends BaseController {
        protected $validaViatico;

        public function __construct() {
            $this->validaViatico = [
                "rut" => "required",
                "total" => "required",
                "calidad_juridica" => "required",
                "establecimiento" => "required",
                "grado" =>  "required",
                "departamento" => "required",
                "cargo" => "required|max_length[45]|regex_match[/a-zA-ZñÑáÁéÉíÍóÓúÚ /]",
                "motivo" => "required|max_length[500]|regex_match[/^;\"'{}\[\]^<>=/]",
                "lugar" => "required|max_length[500]|regex_match[/^;\"'{}\[\]^<>=/]",
                "viatico_100" => "required|numeric",
                "valor_100" => "required|numeric",
                "viatico_40" => "required|numeric",
                "valor_40" => "required|numeric",
                "viatico_20" => "required|numeric",
                "valor_20" => "required|numeric",
                "pernocta" => "required",
                "fecha_desde" => "required",
                "fecha_hasta" => "required",
                "forma_pago" => "required",
                "banco" => "required",
                "n_cuenta" => "required|max_length[20]|numeric",
            ];
        }

        public function guardar_viatico() {
            if ($this->request->getMethod() == "post" && $this->validate($this->validaViatico)) {
                define("PENDIENTE", 0);
                define("OK", 1);

                $rut = $this->request->getPost("rut");
                $total = $this->request->getPost("total");
                $calidad_juridica = $this->request->getPost("calidad_juridica");
                $establecimiento = $this->request->getPost("establecimiento");
                $grado = $this->request->getPost("grado");
                $departamento = $this->request->getPost("departamento");
                $cargo = $this->request->getPost("cargo");
                $id_nomina = $this->request->getPost("id_nomina");
                $motivo = $this->request->getPost("motivo");
                $lugar = $this->request->getPost("lugar");
                $viatico_100 = $this->request->getPost("viatico_100");
                $valor_100 = $this->request->getPost("valor_100");
                $viatico_40 = $this->request->getPost("viatico_40");
                $valor_40 = $this->request->getPost("valor_40");
                $viatico_20 = $this->request->getPost("viatico_20");
                $valor_20 = $this->request->getPost("valor_20");
                $pernocta = $this->request->getPost("pernocta");
                $noches = $this->request->getPost("noches");
                $fecha_desde = $this->request->getPost("fecha_desde");
                $fecha_hasta = $this->request->getPost("fecha_hasta");
                $forma_pago = $this->request->getPost("forma_pago");
                $banco = $this->request->getPost("banco");
                $n_cuenta = $this->request->getPost("n_cuenta");
                $direccion = $this->request->getPost("direccion");
                $departamento2 = $this->request->getPost("departamento2");
                $subdepartamento = $this->request->getPost("subdepartamento");
                $seccion = $this->request->getPost("seccion");
                $procedimiento_2 = $this->request->getPost("procedimiento_2");
                $movil = $this->request->getPost("movil");
                $qth = $this->request->getPost("qth");
                $hora_salida = $this->request->getPost("hora_salida");
                $hora_llegada = $this->request->getPost("hora_llegada");
                $tiempo_encomienda = $this->request->getPost("tiempo_encomienda");

                $rut_usuario = $this->sesión->rut_ses;
                $fecha = date("Y-m-d H:i:s");

                $this->db->transStart();

                $datosViatico = [
                    "rut_funcionario" => $rut,
                    "motivo" => $motivo,
                    "lugar" => $lugar,
                    "dias_100" => $viatico_100,
                    "monto_entero" => $valor_100,
                    "dias_40" => $viatico_40,
                    "monto_medio" => $valor_40,
                    "dias_20" => $viatico_20,
                    "monto_medio20" => $valor_20,
                    "pernocta" => $pernocta,
                    "noches" => $noches,
                    "fecha_desde" => $fecha_desde,
                    "fecha_hasta" => $fecha_hasta,
                    "total" => $total,
                    "aprobacion" => PENDIENTE,
                    "rut_usuario" => $rut_usuario,
                    "fecha" => $fecha,
                    "samu_2procedimiento" => $procedimiento_2,
                    "samu_movil" => $movil,
                    "samu_qth" => $qth,
                    "samu_hora_salida" => $hora_salida,
                    "samu_hora_llegada" => $hora_llegada,
                    "samu_tiempo_encomienda" => $tiempo_encomienda,
                    "forma_pago" => $forma_pago,
                    "banco" => $banco,
                    "n_cuenta" => $n_cuenta,
                    "cargo" => $cargo,
                    "departamento" => $departamento,
                    "grado" => $grado,
                    "est_cod" => $establecimiento,
                    "cjuridica" => $calidad_juridica,
                    "direccion_subdireccion" => $direccion,
                    "departamento_enc" => $departamento2,
                    "subdepartamento" => $subdepartamento,
                    "seccion" => $seccion
                ];

                $this->viaticos->save($datosViatico);

                $datosUsuarios = [
                    "rut" => $rut,
                    "forma_pago" => $forma_pago,
                    "banco" => $banco,
                    "n_cuenta" => $n_cuenta,
                    "cargo" => $cargo,
                    "departamento" => $departamento,
                    "direccion_subdireccion" => $direccion,
                    "departamento_enc" => $departamento2,
                    "subdepartamento" => $subdepartamento,
                    "seccion" => $seccion
                ];

                $this->usuarios->save($datosUsuarios);

                $obtener_id = $this->viaticos->select("max(codigo) as id_viatico")->first();
                $id_viatico = $obtener_id["id_viatico"];

                $datosViaticoTraza = [
                    "id_viatico" => $id_viatico,
                    "estado" => PENDIENTE,
                    "rut_usuario" => $rut_usuario,
                    "fecha" => $fecha
                ];

                $this->viaticos_traza->save($datosViaticoTraza);

                $datosNominaDetalle = [
                    "id_carpeta" => $id_nomina,
                    "id_documento" => $id_viatico
                ];

                $this->carpeta_detalle->insert($datosNominaDetalle);

                $this->db->transComplete();

                if ($this->db->transStatus()) {
                    echo OK;
                } else {
                    echo "Error al registrar el viático";
                }
            }
        }
    }
?>
Reply
#2

@dremy_kelupallun ,

Are you sure that the controller code is a direct copy. I'm asking because the error message says "required|maxlength" is not a valid rule, which is correct. Check your actual code for a "required|maxlength" rule.
Reply
#3

(This post was last modified: 07-08-2021, 07:00 AM by dremy_kelupallun.)

It is a snippet of the code, I leave the complete copy of the controller code

PHP Code:
<?php namespace App\Controllers\Viaticos;

    use App\Controllers\BaseController;
    use App\Models\Configuracion\Md_usuarios;
    use App\Models\Viaticos\Md_calidad_juridica;
    use App\Models\Viaticos\Md_establecimientos;
    use App\Models\Viaticos\Md_grados_descripcion;
    use App\Models\Viaticos\Md_departamentos;
    use App\Models\Viaticos\Md_forma_pago;
    use App\Models\Viaticos\Md_banco;
    use App\Models\Viaticos\Md_dep_direc_subdirec;
    use App\Models\Viaticos\Md_dep_departamentos_enc;
    use App\Models\Viaticos\Md_dep_sub_departamentos;
    use App\Models\Viaticos\Md_dep_secciones;
    use App\Models\Viaticos\Md_temporadas;
    use App\Models\Viaticos\Md_viaticos;
    use App\Models\Viaticos\Md_viaticos_traza;
    use App\Models\Nominas\Md_carpeta_documentos;
    use App\Models\Nominas\Md_carpeta_detalle;
    use \Mpdf\Mpdf;

    class Ctrl_viaticos extends BaseController {
        protected $usuarios;
        protected $calidad_juridica;
        protected $establecimientos;
        protected $grados_descripcion;
        protected $departamentos;
        protected $forma_pago;
        protected $banco;
        protected $direccion;
        protected $departamentos2;
        protected $subdepartamentos;
        protected $secciones;
        protected $temporadas;
        protected $viaticos;
        protected $viaticos_traza;
        protected $carpeta_documentos;
        protected $carpeta_detalle;
        protected $sesión;
        protected $db;
        protected $validaViatico;
        // protected $mpdf;

        public function __construct() {
            $this->usuarios = new Md_usuarios();
            $this->calidad_juridica = new Md_calidad_juridica();
            $this->establecimientos = new Md_establecimientos();
            $this->grados_descripcion = new Md_grados_descripcion();
            $this->departamentos = new Md_departamentos();
            $this->forma_pago = new Md_forma_pago();
            $this->banco = new Md_banco();
            $this->direccion = new Md_dep_direc_subdirec();
            $this->departamentos2 = new Md_dep_departamentos_enc();
            $this->subdepartamentos = new Md_dep_sub_departamentos();
            $this->secciones = new Md_dep_secciones();
            $this->temporadas = new Md_temporadas();
            $this->viaticos = new Md_viaticos();
            $this->viaticos_traza = new Md_viaticos_traza();
            $this->carpeta_documentos = new Md_carpeta_documentos();
            $this->carpeta_detalle = new Md_carpeta_detalle();
            $this->sesión session();
            $this->db = \Config\Database::connect();

            $this->validaViatico = [
                "rut" => "required",
                "total" => "required",
                "calidad_juridica" => "required",
                "establecimiento" => "required",
                "grado" =>  "required",
                "departamento" => "required",
                "cargo" => "required|max_length[45]|regex_match[/a-zA-ZñÑáÁéÉíÍóÓúÚ /]",
                "motivo" => "required|max_length[500]|regex_match[/^;\"'{}\[\]^<>=/]",
                "lugar" => "required|max_length[500]|regex_match[/^;\"'{}\[\]^<>=/]",
                "viatico_100" => "required|numeric",
                "valor_100" => "required|numeric",
                "viatico_40" => "required|numeric",
                "valor_40" => "required|numeric",
                "viatico_20" => "required|numeric",
                "valor_20" => "required|numeric",
                "pernocta" => "required",
                "fecha_desde" => "required",
                "fecha_hasta" => "required",
                "forma_pago" => "required",
                "banco" => "required",
                "n_cuenta" => "required|max_length[20]|numeric",
            ];
            // $this->mpdf = new \Mpdf\Mpdf([
            //    'mode' => 'utf-8',
            //    'format' => [48, 75],
            //    'margin_top' => 2,
            //    'margin_left' => 5,
            //    'margin_right' => 3,
            //    'margin_bottom' => 3
            // ]);
        }

        public function validar_sesion() {
            if (!$this->sesión->has("rut_ses")) {
                echo "La sesión expiró, actualice el sitio web con F5";
                exit();
            }
        }

        public function buscar_funcionario() {
            $this->validar_sesion();
            echo view("Viaticos/buscar_funcionario");
        }

        public function datatable_buscar_funcionario() {
            $this->validar_sesion();
            return $this->usuarios->datatable_buscar_funcionario($this->db);
        }

        public function llenar_cmb_calidad_juridica() {
            $this->validar_sesion();
            $datosCalidadJuridica $this->calidad_juridica->select("codigo as id")->select("cal_descripcion as calidad_juridica")->where("activar"1)->findAll();

            return json_encode($datosCalidadJuridica);
        }

        public function llenar_cmb_establecimiento() {
            $this->validar_sesion();
            $datosEstab $this->establecimientos->select("codigo as id")->select("est_descripcion as establecimiento")->findAll();

            return json_encode($datosEstab);
        }

        public function llenar_cmb_grado() {
            $this->validar_sesion();
            $datosGrados $this->grados_descripcion->select("id_grado as id")->select("descripcion as grado")->findAll();

            return json_encode($datosGrados);
        }

        public function llenar_cmb_departamento() {
            $this->validar_sesion();
            $datosDepa $this->departamentos->select("codigo as id")->select("descripcion as departamento")->where("activar"1)->findAll();

            return json_encode($datosDepa);
        }

        public function llenar_cmb_forma_pago() {
            $this->validar_sesion();
            $datosFormaPago $this->forma_pago->select("codigo as id")->select("forma_descripcion as forma_pago")->findAll();

            return json_encode($datosFormaPago);
        }

        public function llenar_cmb_banco() {
            $this->validar_sesion();
            $datosBanco $this->banco->select("codigo as id")->select("banco_descripcion as banco")->findAll();

            return json_encode($datosBanco);
        }

        public function llenar_cmb_direccion() {
            $this->validar_sesion();
            $datosDireccion $this->direccion->select("id")->select("glosa as direccion")->where("activar"1)->findAll();

            return json_encode($datosDireccion);
        }

        public function llenar_cmb_departamento2($datos) {
            $this->validar_sesion();
            $datos json_decode($datostrue);
            $id_direccion $datos["id_direccion"];

            if ($id_direccion != "") {
                $datosDepartamento $this->departamentos2->select("id")->select("glosa as departamento")->where("id_direc"$id_direccion)->where("activar"1)->findAll();
            } else {
                $datosDepartamento $this->departamentos2->select("id")->select("glosa as departamento")->where("activar"1)->findAll();
            }

            return json_encode($datosDepartamento);
        }

        public function llenar_cmb_subdepartamento($datos) {
            $this->validar_sesion();
            $datos json_decode($datostrue);
            $id_departamento $datos["id_departamento"];

            if ($id_departamento != "") {
                $datosSubdepa $this->subdepartamentos->select("id")->select("glosa as subdepartamento")->where("id_departamento"$id_departamento)->where("activar"1)->findAll();
            } else {
                $datosSubdepa $this->subdepartamentos->select("id")->select("glosa as subdepartamento")->where("activar"1)->findAll();
            }

            return json_encode($datosSubdepa);
        }

        public function llenar_cmb_seccion($datos) {
            $this->validar_sesion();
            $datos json_decode($datostrue);
            $id_subdepartamento $datos["id_subdepartamento"];

            if ($id_subdepartamento != "") {
                $datosSeccion $this->secciones->select("id")->select("glosa as seccion")->where("id_subdepto"$id_subdepartamento)->where("activar"1)->findAll();
            } else {
                $datosSeccion $this->secciones->select("id")->select("glosa as seccion")->where("activar"1)->findAll();
            }

            return json_encode($datosSeccion);
        }

        public function consulta_año() {
            $this->validar_sesion();
            $fecha_desde $this->request->getPost("fecha_desde");

            echo $this->temporadas->consulta_año($this->db$fecha_desde);
        }

        public function consultar_monto_temporada() {
            $this->validar_sesion();
            $fecha_desde $this->request->getPost("fecha_desde");
            $rut $this->request->getPost("rut");

            echo $this->temporadas->consultar_monto_temporada($this->db$fecha_desde$rut);
        }

        public function buscar_nomina() {
            $this->validar_sesion();
            echo view("Viaticos/buscar_nomina");
        }

        public function datatable_buscar_nomina() {
            $this->validar_sesion();
            define("ACTIVO"1);
            $id_usuario $this->sesión->rut_ses;

            $datosNominas $this->carpeta_documentos->select("id")->select("glosa as nombre_nomina")->select("IFNULL(ELT(FIELD(TIPO, 1, 2, 3),'Viáticos','Pasajes','Documentos'),'Sin registro') as tipo_carpeta")->where("usuario"$id_usuario)->where("estado"ACTIVO)->findAll();

            $salida = array('data' => $datosNominas);
            return json_encode($salida);
        }

        public function guardar_viatico() {
            $this->validar_sesion();
            if ($this->request->getMethod() == "post" && $this->validate($this->validaViatico)) {
                define("PENDIENTE"0);
                define("OK"1);

                $rut $this->request->getPost("rut");
                $total $this->request->getPost("total");
                $calidad_juridica $this->request->getPost("calidad_juridica");
                $establecimiento $this->request->getPost("establecimiento");
                $grado $this->request->getPost("grado");
                $departamento $this->request->getPost("departamento");
                $cargo $this->request->getPost("cargo");
                $id_nomina $this->request->getPost("id_nomina");
                $motivo $this->request->getPost("motivo");
                $lugar $this->request->getPost("lugar");
                $viatico_100 $this->request->getPost("viatico_100");
                $valor_100 $this->request->getPost("valor_100");
                $viatico_40 $this->request->getPost("viatico_40");
                $valor_40 $this->request->getPost("valor_40");
                $viatico_20 $this->request->getPost("viatico_20");
                $valor_20 $this->request->getPost("valor_20");
                $pernocta $this->request->getPost("pernocta");
                $noches $this->request->getPost("noches");
                $fecha_desde $this->request->getPost("fecha_desde");
                $fecha_hasta $this->request->getPost("fecha_hasta");
                $forma_pago $this->request->getPost("forma_pago");
                $banco $this->request->getPost("banco");
                $n_cuenta $this->request->getPost("n_cuenta");
                $direccion $this->request->getPost("direccion");
                $departamento2 $this->request->getPost("departamento2");
                $subdepartamento $this->request->getPost("subdepartamento");
                $seccion $this->request->getPost("seccion");
                $procedimiento_2 $this->request->getPost("procedimiento_2");
                $movil $this->request->getPost("movil");
                $qth $this->request->getPost("qth");
                $hora_salida $this->request->getPost("hora_salida");
                $hora_llegada $this->request->getPost("hora_llegada");
                $tiempo_encomienda $this->request->getPost("tiempo_encomienda");

                $rut_usuario $this->sesión->rut_ses;
                $fecha date("Y-m-d H:i:s");

                $this->db->transStart();

                $datosViatico = [
                    "rut_funcionario" => $rut,
                    "motivo" => $motivo,
                    "lugar" => $lugar,
                    "dias_100" => $viatico_100,
                    "monto_entero" => $valor_100,
                    "dias_40" => $viatico_40,
                    "monto_medio" => $valor_40,
                    "dias_20" => $viatico_20,
                    "monto_medio20" => $valor_20,
                    "pernocta" => $pernocta,
                    "noches" => $noches,
                    "fecha_desde" => $fecha_desde,
                    "fecha_hasta" => $fecha_hasta,
                    "total" => $total,
                    "aprobacion" => PENDIENTE,
                    "rut_usuario" => $rut_usuario,
                    "fecha" => $fecha,
                    "samu_2procedimiento" => $procedimiento_2,
                    "samu_movil" => $movil,
                    "samu_qth" => $qth,
                    "samu_hora_salida" => $hora_salida,
                    "samu_hora_llegada" => $hora_llegada,
                    "samu_tiempo_encomienda" => $tiempo_encomienda,
                    "forma_pago" => $forma_pago,
                    "banco" => $banco,
                    "n_cuenta" => $n_cuenta,
                    "cargo" => $cargo,
                    "departamento" => $departamento,
                    "grado" => $grado,
                    "est_cod" => $establecimiento,
                    "cjuridica" => $calidad_juridica,
                    "direccion_subdireccion" => $direccion,
                    "departamento_enc" => $departamento2,
                    "subdepartamento" => $subdepartamento,
                    "seccion" => $seccion
                
];

                $this->viaticos->save($datosViatico);

                $datosUsuarios = [
                    "rut" => $rut,
                    "forma_pago" => $forma_pago,
                    "banco" => $banco,
                    "n_cuenta" => $n_cuenta,
                    "cargo" => $cargo,
                    "departamento" => $departamento,
                    "direccion_subdireccion" => $direccion,
                    "departamento_enc" => $departamento2,
                    "subdepartamento" => $subdepartamento,
                    "seccion" => $seccion
                
];

                $this->usuarios->save($datosUsuarios);

                $obtener_id $this->viaticos->select("max(codigo) as id_viatico")->first();
                $id_viatico $obtener_id["id_viatico"];

                $datosViaticoTraza = [
                    "id_viatico" => $id_viatico,
                    "estado" => PENDIENTE,
                    "rut_usuario" => $rut_usuario,
                    "fecha" => $fecha
                
];

                $this->viaticos_traza->save($datosViaticoTraza);

                $datosNominaDetalle = [
                    "id_carpeta" => $id_nomina,
                    "id_documento" => $id_viatico
                
];

                $this->carpeta_detalle->insert($datosNominaDetalle);

                $this->db->transComplete();

                if ($this->db->transStatus()) {
                    echo OK;
                } else {
                    echo "Error al registrar el viático";
                }
            }
        }
    }
?>


View:

Code:
<div class="content-header">
    <div class="container-fluid">
        <div class="row mb-2">
            <div class="col-sm-6">
                <h1 class="m-0">Ingreso Viáticos</h1>
            </div>
            <div class="col-sm-6">
                <ol class="breadcrumb float-sm-right">
                    <li class="breadcrumb-item active">Viáticos</li>
                    <li class="breadcrumb-item active">Ingreso Viáticos</li>
                </ol>
            </div>
        </div>
    </div>
</div>
<section class="content">
    <div class="container-fluid">
        <div class="card">
            <div class="card-body">
                <div class="container-fluid">
                    <center>
                        <button class="btn btn-success" id="btn_aceptar" name="btn_aceptar" type="button"><i class="fas fa-save"></i> Aceptar</button>
                        <button class="btn btn-info" id="btn_limpiar" name="btn_limpiar" type="button"><i class="fas fa-broom"></i> Limpiar</button>
                    </center>
                </div>
            </div>
        </div>
        <div class="card">
            <div class="card-header">
                <div class="card-title">
                    Formulario Ingreso de Viáticos
                </div>
            </div>
            <div class="card-body">
                <form id="form_viatico" name="form_viatico" enctype="multipart/form-data">
                    <div class="row">
                        <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
                            <div class="form-group">
                                <label class="small mb-1" for="txt_total">Total a Pagar</label>
                                <div class="input-group mb-3">
                                    <div class="input-group-prepend">
                                        <span class="input-group-text">$</span>
                                    </div>
                                    <input type='text' class="form-control bg-info" id='txt_total' name="txt_total" style="font-size: 120%;" />
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
                            <div class="form-group">
                                <label class="small mb-1" for="txt_rut">RUN Funcionario</label>
                                <div class="input-group">
                                    <input type='text' class="form-control" id='txt_rut' name="txt_rut" placeholder="Ingrese RUN y presione ENTER" />
                                    <div class="input-group-append">
                                        <button class="btn btn-outline-dark" type="button" id="btn_buscar_func" name="btn_buscar_func"><i class="fas fa-search"></i> Busqueda Avanzada</button>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
                            <div class="form-group">
                                <label class="small mb-1" for="txt_nombre_completo">Nombre Completo</label>
                                <input type='text' class="form-control" id='txt_nombre_completo' name="txt_nombre_completo" />
                            </div>
                        </div>
                        <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                            <div class="form-group">
                                <label class="small mb-1" for="cmb_calidad_juridica">Calidad Jurídica</label>
                                <select id="cmb_calidad_juridica" name="cmb_calidad_juridica" class="form-control"></select>
                            </div>
                        </div>
                        <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                            <div class="form-group">
                                <label class="small mb-1" for="cmb_establecimiento">Establecimiento</label>
                                <select id="cmb_establecimiento" name="cmb_establecimiento" class="form-control"></select>
                            </div>
                        </div>
                        <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                            <div class="form-group">
                                <label class="small mb-1" for="cmb_grado">Grado</label>
                                <select id="cmb_grado" name="cmb_grado" class="form-control"></select>
                            </div>
                        </div>
                        <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                            <div class="form-group">
                                <label class="small mb-1" for="txt_cargo">Cargo</label>
                                <input type='text' class="form-control" id='txt_cargo' name="txt_cargo" />
                            </div>
                        </div>
                        <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                            <div class="form-group">
                                <label class="small mb-1" for="cmb_departamento">Departamento</label>
                                <select id="cmb_departamento" name="cmb_departamento" class="form-control"></select>
                            </div>
                        </div>
                    </div>
                    <div class="card">
                        <div class="card-body">
                            <div class="container-fluid">
                                <div class="row">
                                    <div class="card-title">Buscar Nómina (Opcional)</div>
                                </div>
                                <div class="row">
                                    <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                                        <div class="form-group">
                                            <label class="small mb-1" for="txt_id_nomina">Id. Nómina</label>
                                            <input type='text' class="form-control" id='txt_id_nomina' name="txt_id_nomina" />
                                        </div>
                                    </div>
                                    <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
                                        <div class="form-group">
                                            <label class="small mb-1" for="txt_nombre_nomina">Nombre Nómina</label>
                                            <div class="input-group">
                                                <input type='text' class="form-control" id='txt_nombre_nomina' name="txt_nombre_nomina" />
                                                <div class="input-group-append">
                                                    <button class="btn btn-outline-dark" type="button" id="btn_buscar_nomina" name="btn_buscar_nomina"><i class="fas fa-search"></i> Buscar Nómina</button>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                    <ul class="nav nav-tabs" id="myTab" role="tablist">
                        <li class="nav-item" role="presentation">
                            <a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-selected="true">Ingreso de Datos</a>
                        </li>
                        <li class="nav-item" role="presentation">
                            <a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="profile" aria-selected="false">Detalle SAMU</a>
                        </li>
                    </ul>
                    <div class="tab-content" id="myTabContent">
                        <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
                            <div class="container-fluid">
                                <br>
                                <div class="card">
                                    <div class="card-body">
                                        <div class="row">
                                            <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                                                <div class="form-check">
                                                    <input class="form-check-input" type="checkbox" value="" name="chk_viatico_0" id="chk_viatico_0">
                                                    <label class="form-check-label" for="chk_viatico_0">Viático costo $0</label>
                                                </div>
                                            </div>
                                        </div>
                                        <div class="row">
                                            <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="txt_motivo">Motivo</label>
                                                    <textarea class="form-control" id="txt_motivo" name="txt_motivo" rows="3"></textarea>
                                                </div>
                                            </div>
                                            <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="txt_lugar">Lugar</label>
                                                    <textarea class="form-control" id="txt_lugar" name="txt_lugar" rows="3"></textarea>
                                                </div>
                                            </div> 
                                            <div class="col-xl-2 col-lg-2 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="txt_viatico_100">Viático Completo 100%</label>
                                                    <input type='number' class="form-control" id='txt_viatico_100' name="txt_viatico_100" min="0" value="0" />
                                                </div>
                                            </div>
                                            <div class="col-xl-2 col-lg-2 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="txt_valor_100">Valor Grado 100%</label>
                                                    <input type='text' class="form-control" id='txt_valor_100' name="txt_valor_100" />
                                                </div>
                                            </div>
                                            <div class="col-xl-2 col-lg-2 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="txt_viatico_40">Viático Parcial 40%</label>
                                                    <input type='number' class="form-control" id='txt_viatico_40' name="txt_viatico_40" min="0" value="0" />
                                                </div>
                                            </div>
                                            <div class="col-xl-2 col-lg-2 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="txt_valor_40">Valor Grado 40%</label>
                                                    <input type='text' class="form-control" id='txt_valor_40' name="txt_valor_40" />
                                                </div>
                                            </div>
                                            <div class="col-xl-2 col-lg-2 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="txt_viatico_20">Viático Parcial 20%</label>
                                                    <input type='number' class="form-control" id='txt_viatico_20' name="txt_viatico_20" min="0" value="0" />
                                                </div>
                                            </div>
                                            <div class="col-xl-2 col-lg-2 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="txt_valor_20">Valor Grado 20%</label>
                                                    <input type='text' class="form-control" id='txt_valor_20' name="txt_valor_20" />
                                                </div>
                                            </div>
                                            <div class="col-xl-2 col-lg-2 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="txt_pernocta">Pernocta Fuera</label>
                                                    <input type='text' class="form-control" id='txt_pernocta' name="txt_pernocta" value="No" />
                                                </div>
                                            </div>
                                            <div class="col-xl-2 col-lg-2 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="txt_noches">Noches</label>
                                                    <input type='text' class="form-control" id='txt_noches' name="txt_noches" value="0" />
                                                </div>
                                            </div>
                                            <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="dt_desde">Desde</label>
                                                    <input type='text' class="form-control" id='dt_desde' name="dt_desde" />
                                                </div>
                                            </div>
                                            <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="dt_hasta">Hasta</label>
                                                    <input type='text' class="form-control" id='dt_hasta' name="dt_hasta" />
                                                </div>
                                            </div>
                                            <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="cmb_forma_pago">Forma de Pago</label>
                                                    <select id="cmb_forma_pago" name="cmb_forma_pago" class="form-control"></select>
                                                </div>
                                            </div>
                                            <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="cmb_banco">Banco</label>
                                                    <select id="cmb_banco" name="cmb_banco" class="form-control"></select>
                                                </div>
                                            </div>
                                            <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="txt_n_cuenta">N° de Cuenta</label>
                                                    <input type='text' class="form-control" id='txt_n_cuenta' name="txt_n_cuenta" />
                                                </div>
                                            </div>
                                            <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="cmb_direccion">Dirección/Subdirección</label>
                                                    <select id="cmb_direccion" name="cmb_direccion" class="form-control"></select>
                                                </div>
                                            </div>
                                            <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="cmb_departamento2">Departamento</label>
                                                    <select id="cmb_departamento2" name="cmb_departamento2" class="form-control"></select>
                                                </div>
                                            </div>
                                            <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="cmb_subdepartamento">Subdepartamento</label>
                                                    <select id="cmb_subdepartamento" name="cmb_subdepartamento" class="form-control"></select>
                                                </div>
                                            </div>
                                            <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="cmb_seccion">Sección</label>
                                                    <select id="cmb_seccion" name="cmb_seccion" class="form-control"></select>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">
                            <div class="container-fluid">
                                <br>
                                <div class="card">
                                    <div class="card-body">
                                        <div class="row">
                                            <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="txt_procedimiento_2">2° Procedimiento</label>
                                                    <input type='text' class="form-control" id='txt_procedimiento_2' name="txt_procedimiento_2" />
                                                </div>
                                            </div>
                                            <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="txt_movil">Móvil</label>
                                                    <input type='text' class="form-control" id='txt_movil' name="txt_movil" />
                                                </div>
                                            </div>
                                            <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="txt_qth">QTH</label>
                                                    <input type='text' class="form-control" id='txt_qth' name="txt_qth" />
                                                </div>
                                            </div>
                                            <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="txt_hora_salida">Hora Salida</label>
                                                    <input type='text' class="form-control" id='txt_hora_salida' name="txt_hora_salida" value="00:00" />
                                                </div>
                                            </div>
                                            <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="txt_hora_llegada">Hora Llegada</label>
                                                    <input type='text' class="form-control" id='txt_hora_llegada' name="txt_hora_llegada" value="00:00" />
                                                </div>
                                            </div>
                                            <div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
                                                <div class="form-group">
                                                    <label class="small mb-1" for="txt_tiempo_encomienda">Tiempo Encomienda</label>
                                                    <input type='text' class="form-control" id='txt_tiempo_encomienda' name="txt_tiempo_encomienda" value="00:00" />
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>
</section>
<div id="dlg_buscar" class="modal fade" role="dialog">
    <div class="modal-dialog modal-xl">
        <div class="modal-content">
            <div class="modal-header">
                <h4 id="titulo_modal" class="modal-title"></h4>
            </div>
            <div class="modal-body">
                <input type="hidden" name="txt_origen" id="txt_origen" value="ingresar_viatico">
                <div id="divContenedorBuscar"></div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-dark" data-dismiss="modal">Cerrar</button>
            </div>
        </div>
    </div>
</div>
<script type="text/javascript" src="<?php echo base_url(); ?>/js/Viaticos/ingresar_viatico.js"></script>


JS, function:

Code:
function guardar_viatico() {
    var rut = $("#txt_rut").val();
    var total = $("#txt_total").val();
    var calidad_juridica = $("#cmb_calidad_juridica").val();
    var establecimiento = $("#cmb_establecimiento").val();
    var grado = $("#cmb_grado").val();
    var departamento = $("#cmb_departamento").val();
    var cargo = $("#txt_cargo").val();

    var id_nomina = $("#txt_id_nomina").val();

    var motivo = $("#txt_motivo").val();
    var lugar = $("#txt_lugar").val();
    var viatico_100 = $("#txt_viatico_100").val();
    var valor_100 = $("#txt_valor_100").val();
    var viatico_40 = $("#txt_viatico_40").val();
    var valor_40 = $("#txt_valor_40").val();
    var viatico_20 = $("#txt_viatico_20").val();
    var valor_20 = $("#txt_valor_20").val();
    var pernocta = $("#txt_pernocta").val();
    var noches = $("#txt_noches").val();
    var fecha_desde = $("#dt_desde").val();
    var fecha_hasta = $("#dt_hasta").val();

    var forma_pago = $("#cmb_forma_pago").val();
    var banco = $("#cmb_banco").val();
    var n_cuenta = $("#txt_n_cuenta").val();
    var direccion = $("#cmb_direccion").val();
    var departamento2 = $("#cmb_departamento2").val();
    var subdepartamento = $("#cmb_subdepartamento").val();
    var seccion = $("#cmb_seccion").val();

    var procedimiento_2 = $("#txt_procedimiento_2").val();
    var movil = $("#txt_movil").val();
    var qth = $("#txt_qth").val();
    var hora_salida = $("#txt_hora_salida").val();
    var hora_llegada = $("#txt_hora_llegada").val();
    var tiempo_encomienda = $("#txt_tiempo_encomienda").val();

    if (viatico_20 > 0 || viatico_40 > 0 || viatico_100 > 0) {
        if ($("#dt_desde").data("DateTimePicker").date() <= $("#dt_hasta").data("DateTimePicker").date()) {
            if (pernocta=="Si"){
                pernocta="S";
            }else if(pernocta=="No"){
                pernocta="N";
            }

            $.ajax({
                url: base_url + "/index.php/Viaticos/Ctrl_viaticos/guardar_viatico",
                type: "POST",
                async: false,
                data: {
                    rut: rut,
                    total: total,
                    calidad_juridica: calidad_juridica,
                    establecimiento: establecimiento,
                    grado: grado,
                    departamento: departamento,
                    cargo: cargo,
                    id_nomina: id_nomina,
                    motivo: motivo,
                    lugar: lugar,
                    viatico_100: viatico_100,
                    valor_100: valor_100,
                    viatico_40: viatico_40,
                    valor_40: valor_40,
                    viatico_20: viatico_20,
                    valor_20: valor_20,
                    pernocta: pernocta,
                    noches: noches,
                    fecha_desde: fecha_desde,
                    fecha_hasta: fecha_hasta,
                    forma_pago: forma_pago,
                    banco: banco,
                    n_cuenta: n_cuenta,
                    direccion: direccion,
                    departamento2: departamento2,
                    subdepartamento: subdepartamento,
                    seccion: seccion,
                    procedimiento_2: procedimiento_2,
                    movil: movil,
                    qth: qth,
                    hora_salida: hora_salida,
                    hora_llegada: hora_llegada,
                    tiempo_encomienda: tiempo_encomienda
                },
                success: function(respuesta) {
                    const OK = 1;

                    if (respuesta == OK) {
                        Toast.create("Éxito", "Viático guardado con éxito", TOAST_STATUS.SUCCESS, 5000);
                        // viatico_pdf();
                        limpiar_datos();
                    } else {
                        Toast.create("Error", respuesta, TOAST_STATUS.DANGER, 5000);
                    }
                },
                error: function(error) {
                    respuesta = JSON.parse(error["responseText"]);
                    Toast.create("Error", respuesta.message, TOAST_STATUS.DANGER, 5000);
                }
            });
        } else {
            Toast.create("Aviso", "Tiene que seleccionar al menos un viático (parcial o completo).", TOAST_STATUS.WARNING, 5000);
        }
    } else {
        Toast.create("Aviso", "Tiene que seleccionar al menos un viático (parcial o completo).", TOAST_STATUS.WARNING, 5000);
    }
}
Reply
#4

Your validation rules seems correct. Can you share the full error message, including the stack trace if any?
Reply
#5

(This post was last modified: 07-08-2021, 01:32 PM by dremy_kelupallun.)

Complete response:

Code:
{
    "title": "CodeIgniter\\Validation\\Exceptions\\ValidationException",
    "type": "CodeIgniter\\Validation\\Exceptions\\ValidationException",
    "code": 500,
    "message": "required|max_length is not a valid rule.",
    "file": "/srv/http/trazador/system/Validation/Validation.php",
    "line": 321,
    "trace": [
        {
            "file": "/srv/http/trazador/system/Validation/Validation.php",
            "line": 321,
            "function": "forRuleNotFound",
            "class": "CodeIgniter\\Validation\\Exceptions\\ValidationException",
            "type": "::"
        },
        {
            "file": "/srv/http/trazador/system/Validation/Validation.php",
            "line": 159,
            "function": "processRules",
            "class": "CodeIgniter\\Validation\\Validation",
            "type": "->"
        },
        {
            "file": "/srv/http/trazador/system/Controller.php",
            "line": 183,
            "function": "run",
            "class": "CodeIgniter\\Validation\\Validation",
            "type": "->"
        },
        {
            "file": "/srv/http/trazador/app/Controllers/Viaticos/Ctrl_viaticos.php",
            "line": 234,
            "function": "validate",
            "class": "CodeIgniter\\Controller",
            "type": "->"
        },
        {
            "file": "/srv/http/trazador/system/CodeIgniter.php",
            "line": 928,
            "function": "guardar_viatico",
            "class": "App\\Controllers\\Viaticos\\Ctrl_viaticos",
            "type": "->"
        },
        {
            "file": "/srv/http/trazador/system/CodeIgniter.php",
            "line": 436,
            "function": "runController",
            "class": "CodeIgniter\\CodeIgniter",
            "type": "->"
        },
        {
            "file": "/srv/http/trazador/system/CodeIgniter.php",
            "line": 336,
            "function": "handleRequest",
            "class": "CodeIgniter\\CodeIgniter",
            "type": "->"
        },
        {
            "file": "/srv/http/trazador/public/index.php",
            "line": 37,
            "function": "run",
            "class": "CodeIgniter\\CodeIgniter",
            "type": "->"
        }
    ]
}
Reply
#6

Let's try to bisect this. In your validaViatico rules, remove ALL rules that contains this regex match rule

regex_match[/^;\"'{}\[\]^<>=/]"

Then try to run again. I'm thinking the validation service is having a hard time splitting this rule.
Reply
#7

(07-08-2021, 02:13 PM)paulbalandan Wrote: Let's try to bisect this. In your validaViatico rules, remove ALL rules that contains this regex match rule

regex_match[/^;\"'{}\[\]^<>=/]"

Then try to run again. I'm thinking the validation service is having a hard time splitting this rule.
Yes friend, I took the regex out of him, and it worked. But I need that validation, is there a way to do it without failing?
And thank you very much for the help.
Reply
#8

So this is a confirmed bug. Please open an issue ticket at GitHub, please.

github.com/codeigniter4/CodeIgniter4
Reply
#9

(07-09-2021, 05:25 AM)paulbalandan Wrote: So this is a confirmed bug. Please open an issue ticket at GitHub, please.

github.com/codeigniter4/CodeIgniter4

I don't know if I opened the ticket correctly.
https://github.com/codeigniter4/CodeIgni...ssues/4929
Thank you very much for the help.
Reply
#10

(This post was last modified: 07-09-2021, 10:14 AM by paulbalandan.)

Thanks. I'll look into it shortly.

Can you try changing this line in system/Validation/Validation.php ?

https://github.com/codeigniter4/CodeIgni...n.php#L793

to this:

$nonEscapeBracket = '(?: (?<!\\\\)(?:\\\\\\\\)*[\[\]])';
Reply




Theme © iAndrew 2016 - Forum software by © MyBB