validaciones personalizadas php yii2 yii2-basic-app yii2-model

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());