Cześć,
mam pytanie, czy udało się komuś zastosować walidację warunkową w modelu w funkcji rules() w Yii2?
Chciałbym zrobić tak, by po wyborze rodzaju rejestracji jako firma w formularzu rejestracyjnym, wymagane było wypełnienie NIP oraz nazwy firmy.
Narazie testuję najprostsze warunki (w tym przypadku niech pola nazwa firmy i nip będą wymagane, jak nazwisko będzie "b" - w rzeczywistości stosuję radio buttons):
class RejestracjaForm extends Model
{
public $email;
public $password;
public $idTypUzytk;
public $dataRejestr;
public $nazwaFirmy;
public $imie;
public $nazwisko;
public $nip;
public $telKontakt;
public $fax;
public $ulica;
public $nrDomu;
public $nrLokalu;
public $kodPocztowy;
public $miasto;
public $idWojewodztwo;
public $idKraj;
public $czyFirma;
public $akceptReg;
/**
* @return array the validation rules.
*/
public function rules()
{
return [
// username and password are both required
[['email', 'password','nazwisko','imie','telKontakt','ulica','nrDomu','kodPocztowy','miasto','idWojewodztwo', 'idKraj'], 'required','message' => 'Pole nie może być puste.'],
// rememberMe must be a boolean value
['czyFirma', 'required','message' => 'Pole nie może być puste.'],
[['nazwaFirmy, nip'],'required','whenClient' => "function (attribute, value) {
return $('#rejestracjaform-nazwisko').val() === 'b';
}",'message' => 'Pole nie może być puste.'],
próbowałem także samego ‘when’:
[['nazwaFirmy, nip'],'required','when' => function ($model) {
return $model->nazwisko == 'b';
},'message' => 'Pole nie może być puste.'],
niestety nazwaFirmy oraz NIP nie stają się polami wymaganymi, gdy nazwisko jest ‘b’;
[size="6"][rozwiązanie]:[/size]
[‘nazwaFirmy, nip’] powinno być [‘nazwaFirmy’, ‘nip’]