public function rules()
{
return [
[['employee_nino'], 'required', 'when' => function($model) {return $model->employee_nonino == 1;},'skipOnEmpty' => true, 'skipOnError' => true,'message' => 'Shit.','on' => ['personalupdate']],
[['employee_nationality','employee_marital_status','employee_workpermit','employee_title','employee_firstname','employee_lastname', 'employee_email', 'employee_phone', 'employee_mobile', 'employee_address', 'employee_town', 'employee_postcode','employee_country'], 'required', 'on' => ['personalupdate']],
[['employee_absence_days','employee_absence_periods','employee_medication','employee_treatment','employee_injury','employee_disability', 'employee_p46'], 'required', 'on' => ['medicalupdate']],
[['employee_worktime','employee_details_complete','employee_details_held'], 'compare', 'compareValue' => true,'message' => 'This is required'],
[['employee_kin_firstname','employee_kin_lastname','employee_kin_contactno','employee_kin_relationship','employee_kin_address','employee_kin_postcode'], 'required', 'on' => ['nextkinupdate']],
[['employee_bank_holder_name','employee_bank_name','employee_bank_sortcode','employee_bank_account_number','employee_nobank'], 'required', 'on' => ['bankaccountupdate']],
[['employee_user_id'], 'required'],
[['employee_user_id', 'employee_title', 'employee_country', 'employee_nationality', 'employee_nino', 'employee_marital_status', 'employee_p46'], 'integer'],
[['employee_workpermit', 'employee_convict', 'employee_med_examination', 'employee_declaration', 'employee_nonino', 'employee_nobank', 'employee_details_complete', 'employee_details_held', 'employee_medication', 'employee_treatment', 'employee_injury', 'employee_disability', 'employee_worktime'], 'boolean'],
[['employee_dob'], 'safe'],
[['employee_firstname', 'employee_lastname', 'employee_email', 'employee_address', 'employee_bank_holder_name', 'employee_bank_name', 'employee_bank_sortcode', 'employee_bank_account_number', 'employee_kin_firstname', 'employee_kin_lastname', 'employee_kin_contactno', 'employee_kin_relationship', 'employee_kin_address', 'employee_kin_postcode', 'employee_absence_days', 'employee_absence_periods'], 'string', 'max' => 255],
[['employee_phone', 'employee_mobile', 'employee_postcode'], 'string', 'max' => 10],
[['employee_town'], 'string', 'max' => 32],
[['employee_convict_description'], 'string', 'max' => 1024],
[['employee_user_id'], 'unique']
];
}
The rule which doesn’t work is conditional one:
[[‘employee_nino’], ‘required’, ‘when’ => function($model) {return $model->employee_nonino == 1;},‘skipOnEmpty’ => true, ‘skipOnError’ => true,‘message’ => ‘Shit.’,‘on’ => [‘personalupdate’]],
employee_nino - is always required no matter what value has $model->employee_nonino, I have even tried to set it manually to make sure it gets value 1