2014-01-25 2 views
0

Пытаясь выяснить, достойный подход здесь ...Yii: Блоки необходимых данных формы

У меня есть форма, где, основываясь на, если пользователь выбирает выпадающий в форме или нет, она показывает или скрывает несколько других полей формы. Если поля формы видны, я хочу, чтобы они были необходимы. Если они не видны, я не хочу, чтобы они требовались.

Я пытаюсь выяснить подход для обработки этого в моих правилах модели - я пытался что-то вроде этого в моих правилах модели() функция:

$requiredFields = 'cashAtClosing, offerPrice, closingDate, financingType,surveyDays,'. 
     'earnestMoney, escrowAgent, escrowAgentAddress, surveyProvider, surveyDays, titlePolicyPayment,'. 
     'titleObjectionDays, titleCompany, titleCompanyAddress, optionFee, optionDays, optionCredit'; 

    if ($this->financingType == "THIRDPARTYFINANCE") 
    { 
     Yii::trace("Add Financing Type Rules"); 
     $requiredFields .= ',creditApprovalRequired,creditApprovalDays,loan1Amount, loan1DueInFullYears, '. 
     'loan1InterestNotToExceed, loan1InterestNotToExceedYears, loan1OriginationNotToExceed'; 

    } 
    else 
    { 
     $safeFields .= ',creditApprovalRequired,creditApprovalDays,loan1Amount, loan1DueInFullYears, '. 
     'loan1InterestNotToExceed, loan1InterestNotToExceedYears, loan1OriginationNotToExceed'; 
    } 

    array_push($rulesArray, array($requiredFields, 'required')); 

Проблема в том, что кажется, что функция правил вызывается до того, как модель заполняется, поэтому в моем примере здесь $ this-> financeType всегда пуст, поэтому этот код не работает.

Что здесь лучше?

Спасибо.

ответ

0

Попробуйте добавить этот код в метод beforeValidate() вашей модели. Это должно помочь вам.

Но создайте свойство $ rulesArray в своей модели. Добавьте новые правила к этой переменной с помощью метода $ this-> rulesArray в beforeValidate() и используйте эту переменную в вашем методе rules().

Смежные вопросы