In a model form, I’d like to know how to put either name or firstname required. Not both. I tried this tip but it doesn’t work.
Have you any ideas ?
return [
[['customerName', 'mail'], 'required'],
[['mail'], 'email'],
[['name'], 'required', 'when' => function($model) {
return empty($model->$firstname);
},
'enableClientValidation' => false,
'message' => 'Vous devez compléter le nom ou le prénom de l\'utilisateur avant de valider le formulaire.'
],
]
return [
[['name', 'firstname'], 'oneMustBeSetValidator'],
]
public function oneMustBeSetValidator($attribute, $params)
{
if (!$this->hasErrors()) {
if(empty($this->name) && empty($this->firstname)) {
$this->addError($attribute, 'Name or firstname must be set.');
}
}
}
I mean the form is posted even if both fields are empty.
public function rules()
{
return [
[['nomClient', 'mailClient'], 'required'],
[['mailClient'], 'email'],
[['nomUser', 'prenomUser'], 'oneMustBeSetValidator'],
];
}
public function oneMustBeSetValidator($attribute, $params)
{
if (!$this->hasErrors()) {
if(empty($this->nomUser) && empty($this->prenomUser)) {
$this->addError($attribute, 'Vous devez compléter le nom ou le prénom de l\'utilisateur avant de valider le formulaire.');
}
}
}