php - personalizadas - ¿Cómo agregar la función de validación personalizada en el modelo dinámico en Yii2?
validaciones personalizadas yii2 (2)
Esto funciona si checkRm
es un método de la clase DynamicModel
. Entonces, extienda DynamicModel
y agregue este método o use closure como:
...->addRule([''from_rm''], function ($attribute, $params) {
$this->addError($from_rm, ''Please Select Regional Manager.'');
});
Estoy usando el modelo dinámico en mi aplicación básica yii2.
siguiente es el código de mi modelo dinámico.
$model = new /yii/base/DynamicModel([
''role'', ''from_rm'', ''to_rm'', ''user1_subdistrcts''
]);
$model->addRule([''user1_subdistrcts'', ''role''], ''required'', [''message'' => "Please select this field."])
->addRule([''from_rm''], ''checkRm'');
aquí estoy dispuesto a usar la función de validación personalizada ''checkRm'' formulario from_rm
campo también he definido checkRm función de esta manera:
public function checkRm($from_rm, $params)
{
$this->addError($from_rm, ''Please Select Regional Manager.'');
}
Pero cuando envío el formulario, obtengo el error Class checkRm no se encuentra
Ahora, por favor, ayuda a usar la validación personalizada en el modelo dinámico.
También probé when
y whenClient
condiciones del whenClient
pero esas también no funcionan
Prueba esto:
$model = new /yii/base/DynamicModel([
''role'', ''from_rm'', ''to_rm'', ''user1_subdistrcts''
]);
$model->addRule(''from_rm'', function ($attribute, $params) use ($model) {
$model->addError($attribute, ''Please Select Regional Manager.'');
});
EDITAR:
Si, funciona. Pero si quiere probar con un valor vacío para from_rm
, necesita establecer skipOnEmpty
en false
. Ejemplo:
$model = new /yii/base/DynamicModel([
''role'', ''from_rm'', ''to_rm'', ''user1_subdistrcts''
]);
$model->addRule(''from_rm'', function ($attribute, $params) use ($model) {
$model->addError($attribute, ''Please Select Regional Manager.'');
}, [
''skipOnEmpty'' => false,
]);
$model->validate();
var_dump($model->getErrors());