validaciones personalizadas password formularios errorsummary dinamicos activeform php yii

php - personalizadas - Regla de validación Yii: única



yii2 formularios dinamicos (3)

en el marco Yii, ¿puedo usar una regla de validación única para verificar la singularidad de un campo dentro de alguna condición (sé que hay criterios, pero esta condición es un poco complicada)? Es decir, quiero verificar num_days unique por property_id.

mesa:

NUM PROP_ID 3 4 3 5

la validación debe pasar en caso de que intente insertar 3, 6, pero fallar en el caso de 3, 4


Consulte UniqueAttributesValidator , y también esta respuesta . En los enlaces verá que han usado $this->attributename para la matriz params de la opción de criteria de CUniqueValidator, pero por alguna razón $this->attributename fue null para mí. Creo que esto se debe a que $this no se está pasando correctamente al validador, así que de todos modos sería mejor usar la clase UniqueAttributesValidator, porque se ha creado solo para este tipo de situaciones.

El sql resultante tendrá una cláusula WHERE como esta:

SELECT ... WHERE (`num`=:value) AND (`prop_id`=:prop_id) ...

que fallará fácilmente por 3, 4 y pasará por 3, 6. Así que debería funcionar para su situación.


Crea tu validador personalizado o función de validación, es simple.


Primero crea un campo único en tu tabla

y en el modelo, agregue esto a sus reglas ()

array(''field_name'', ''unique''),

Para combinación de dos campos únicos use este código

public function rules() { return array( array(''firstKey'', ''unique'', ''criteria''=>array( ''condition''=>''`secondKey`=:secondKey'', ''params''=>array( '':secondKey''=>$this->secondKey ) )), ); }