gsd
(Kurgangsd)
March 9, 2011, 3:36pm
1
в CValidator есть addError() который выводит ошибку если поле не валидно, дык вот надо в случае валидности поля выдавать не ошибку, а просто хинт какой нибудь на подобе ошибки. кто ни будь сталкивался?
например при аякс валидации ошибка грузится в $form->error(…); нужно что то подобное при валидности
Есть например successCssClass в clientOptions CActiveForm. В крайнем случае можно самому какой нибудь метод написать, типа $form->getSuccessMessage(‘user_login’). Смотря для чего нужно…
gsd
(Kurgangsd)
March 9, 2011, 6:05pm
3
Спасибо разобрался, требовалось при аякс валидации…
можно как в виджите CActiveForm указать
<?php
'clientOptions'=>array(
'afterValidateAttribute'=>
'js:function(form, attribute, data, hasError){
}') ?>
так и в
<?php echo $form->error($user,'username', array(
'afterValidateAttribute'=>
'js:function(form, attribute, data, hasError){
}')); ?>
ну а дальше думаю ничего сложного
gsd
(Kurgangsd)
March 15, 2011, 8:59am
4
еще вопрос по валидации формы) :
нужно сделать набор полей required,
если определенное поле (boolean валидатор(например если стоит "галочка" у checkbox`a)) в true,
иначе необязательными
array(
'actual_address_zip_code,
actual_address_country,
actual_address_region,
'required', [b]if $this->flag===true[/b]),
что то такое нужно реализовать
napeHeK
(Napehek)
March 15, 2011, 9:23am
5
Вместо названия валидатора, можно написать имя метода модели и сделать проверку на валидность в этом методе.
array('actual_address_zip_code,ctual_address_country, actual_address_region', 'ValidatorName', ...)
public function ValidatorName($attribute, $params)
{
}
Или сделать проверку в afterValidation.
class MyModel extends CActiveRecord
{
public function afterValidation()
{
$errors = array();
if($this->checkBox && !$this->actual_address_zip_code)
$errors['actual_address_zip_code'] = 'Message...';
$this->addError($errors);
}
}
gsd
(Kurgangsd)
March 15, 2011, 9:47am
6
о точно спасибо, а я и забыл про
public function ValidatorName($attribute, $params)
gsd
(Kurgangsd)
March 15, 2011, 9:53am
7
хм тогда получется можно в рулес добавить что то типо
public function rules() {
$rules = array(
.............
);
if($this->flag===true) {
$rules[] = array(
'actual_address_zip_code,
actual_address_country,
actual_address_region',
'required');
return $rules;
}
}