Код: Выделить всё
[['number_of_employees','company_name','company_form'], 'required', 'when' => function($model) {
return $model->company_type !== '3';
}],
Код: Выделить всё
[['number_of_employees','company_name','company_form'], 'required', 'when' => function($model) {
return $model->company_type !== '3';
}],
вот что в правилахOnotole писал(а):А вы уверены, что 3 это именно строка ?
Код: Выделить всё
[['last_name','username','company_phone','password','email','company_city'], 'required'],
[['username','last_name'], 'string', 'min' => 2, 'max' => 255],
['email', 'unique', 'targetClass' => '\budyaga\users\models\User', 'message' => Yii::t('users', 'THIS_EMAIL_ALREADY_TAKEN')],
['company_site', 'url', 'defaultScheme' => 'http'],
['company_phone', 'string'],
[['number_of_employees','company_name','company_form'], 'required', 'when' => function($model) {
return $model->company_type !== '3';
}],
[['company_type','number_of_employees','company_city'], 'integer'],
['company_another_phone','string'],
['password', 'string', 'min' => 6],
Код: Выделить всё
$GetCompanyType = [
'1' => 'первый',
'2' => 'второй',
'3' => 'третий'
];
echo $form->field($model, 'company_type')->label(false)
->radioList($GetCompanyType);
Код: Выделить всё
when' => function($model) {
return $model->company_type !== '3';
}],
а вы не подскажите как это узнать, я просто не знаком как устроена js валидация в yii2? да и что скрывать в целом с js как вывести переменную на экран ну по крайней мере у меня стоит js условие на клик по третей радиокнопке со значением 3 , то есть там точно 3 цифраcaHek2x писал(а):ну залогируйте в вашей ф-циичему равно в момент проверки model->company_typeКод: Выделить всё
when' => function($model) { return $model->company_type !== '3'; }],
так в документации по валидации именно это и написано.Братуха писал(а):Так это получается работает только проверка на сервере, а на js отдельно писать надо? Проверка со стороны сервера работает
хах ... я думал у вас со стороны сервера не работает ))) ну конечно для js отдельно надо писать )Братуха писал(а):Так это получается работает только проверка на сервере, а на js отдельно писать надо? Проверка со стороны сервера работает
как вашей душе угодно ... хоть alert ... хоть console.log ... но соответственно это надо писать в js скрипте ... а не в том коде который я цитировал в предыдущем сообщении ... то php ... и тот кусок вообще не касался валидации js ...Братуха писал(а): да и что скрывать в целом с js как вывести переменную на экран
Я просто действовал по логике если js валидация работает только прописав условие в php по умолчанию, значит и прописав условие должна работать, но все равно не работаетcaHek2x писал(а): https://yiiframework.com.ua/ru/doc/guid ... validation (тут прочитаете как для js прикрутить вашу валидацию - whenClient)
Код: Выделить всё
[['number_of_employees','company_name','company_form'], 'required', 'when' => function($model) {
return $model->company_type !== '3';
},'whenClient' => "function (attribute, value) {
return $('#company_type').val() !== 3;
}"],
Код: Выделить всё
'whenClient' => "function (attribute, value) {
console.log($('#company_type').val());
}"
на это в консоли ничего не выводит, щелкал я по радио кнопкам и ничегоRom писал(а):Дебажте, посмотрите что выводит в консоле браузера.
Код: Выделить всё
'whenClient' => "function (attribute, value) { console.log($('#company_type').val()); }"
Код: Выделить всё
,'whenClient' => "function (attribute, value) {
console.log($('#company_type').val());
}"
Код: Выделить всё
['last_name', 'required', 'when' => function($model) {
return $model->last_name == 'ret';
},'whenClient' => "function (attribute, value) {
console.log($('#last_name').val());
}"],
Потому что не надо щёлкать по кнопкам надо сабмитить форму.Братуха писал(а): на это в консоли ничего не выводит, щелкал я по радио кнопкам и ничего
вернуло 4 undefined 3 console.log и ($('#company_type') и 1 console.log($('#last_name')Rom писал(а):Братуха писал(а): Потому что не надо щёлкать по кнопкам надо сабмитить форму.
Код: Выделить всё
console.log($('#company_type').val());
})(attribute, value)) { yii.validation.required(value, messages, {"message":"Необходимо заполнить «Company Form»."}); }}},{"id":"signupemployerform-company_name","name":"company_name","container":".field-signupemployerform-company_name","input":"#signupemployerform-company_name","error":".help-block.help-block-error","validate":function (attribute, value, messages, deferred, $form) {if ((function (attribute, value) {
console.log($('#company_type').val());
})(attribute, value)) { yii.validation.required(value, messages, {"message":"Необходимо заполнить «Название компании»."}); }}},{"id":"signupemployerform-number_of_employees","name":"number_of_employees","container":".field-signupemployerform-number_of_employees","input":"#signupemployerform-number_of_employees","error":".help-block.help-block-error","validate":function (attribute, value, messages, deferred, $form) {if ((function (attribute, value) {
console.log($('#company_type').val());
})(attribute, value)) { yii.validation.required(value, messages, {"message":"Необходимо заполнить «Количество сотрудников»."}); }yii.validation.number(value, messages, {"pattern":/^\s*[+-]?\d+\s*$/,"message":"Значение «Количество сотрудников» должно быть целым числом.","skipOnEmpty":1});}},{"id":"signupemployerform-company_site","name":"company_site","container":".field-signupemployerform-company_site","input":"#signupemployerform-company_site","error":".help-block.help-block-error","validate":function (attribute, value, messages, deferred, $form) {yii.validation.url(value, messages, {"pattern":/^(http|https):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(?::\d{1,5})?(?:$|[?\/#])/i,"message":"Значение «Ваш сайт» не является правильным URL.","enableIDN":false,"skipOnEmpty":1,"defaultScheme":"http"});}},{"id":"signupemployerform-company_city","name":"company_city","container":".field-signupemployerform-company_city","input":"#signupemployerform-company_city","error":".help-block.help-block-error","validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages, {"message":"Необходимо заполнить «Company City»."});yii.validation.number(value, messages, {"pattern":/^\s*[+-]?\d+\s*$/,"message":"Значение «Company City» должно быть целым числом.","skipOnEmpty":1});}},{"id":"signupemployerform-last_name","name":"last_name","container":".field-signupemployerform-last_name","input":"#signupemployerform-last_name","error":".help-block.help-block-error","validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages, {"message":"Необходимо заполнить «Фамилия»."});yii.validation.string(value, messages, {"message":"Значение «Фамилия» должно быть строкой.","min":2,"tooShort":"Значение «Фамилия» должно содержать минимум 2 символа.","max":255,"tooLong":"Значение «Фамилия» должно содержать максимум 255 символа.","skipOnEmpty":1});if ((function (attribute, value) {
console.log($('#last_name').val());
})(attribute, value)) { yii.validation.required(value, messages, {"message":"Необходимо заполнить «Фамилия»."}); }}},{"id":"signupemployerform-username","name":"username","container":".field-signupemployerform-username","input":"#signupemployerform-username","error":".help-block.help-block-error","validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages, {"message":"Необходимо заполнить «Имя пользователя»."});yii.validation.string(value, messages, {"message":"Значение «Имя пользователя» должно быть строкой.","min":2,"tooShort":"Значение «Имя пользователя» должно содержать минимум 2 символа.","max":255,"tooLong":"Значение «Имя пользователя» должно содержать максимум 255 символа.","skipOnEmpty":1});}},{"id":"signupemployerform-email","name":"email","container":".field-signupemployerform-email","input":"#signupemployerform-email","error":".help-block.help-block-error","validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages, {"message":"Необходимо заполнить «Электронная почта»."});}},{"id":"signupemployerform-company_phone","name":"company_phone","container":".field-signupemployerform-company_phone","input":"#signupemployerform-company_phone","error":".help-block.help-block-error","validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages, {"message":"Необходимо заполнить «Телефон»."});yii.validation.string(value, messages, {"message":"Значение «Телефон» должно быть строкой.","skipOnEmpty":1});}},{"id":"signupemployerform-company_another_phone","name":"company_another_phone","container":".field-signupemployerform-company_another_phone","input":"#signupemployerform-company_another_phone","error":".help-block.help-block-error","validate":function (attribute, value, messages, deferred, $form) {yii.validation.string(value, messages, {"message":"Значение «Дополнительный телефон» должно быть строкой.","skipOnEmpty":1});}},{"id":"signupemployerform-password","name":"password","container":".field-signupemployerform-password","input":"#signupemployerform-password","error":".help-block.help-block-error","validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages, {"message":"Необходимо заполнить «Пароль»."});yii.validation.string(value, messages, {"message":"Значение «Пароль» должно быть строкой.","min":6,"tooShort":"Значение «Пароль» должно содержать минимум 6 символа.","skipOnEmpty":1});}}], []);
А просто не писать тождественное сравнение не пробовали?Пробовал 3 как цифру и как текст, даже пробовал '#company_type input' но ничего