2014-01-25 3 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-> financingType은 항상 비어 있으므로이 코드는 깨지지 않습니다.

더 나은 접근 방법은 무엇입니까?

감사합니다.

답변

0

이 코드를 모델의 beforeValidate() 메소드에 추가하십시오. 그것은 당신을 도와야합니다.

하지만 모델에 $ rulesArray 속성을 만드십시오. beforeValidate() 메소드의 $ this-> rulesArray를 통해이 변수에 새 규칙을 추가하고이 변수를 rules() 메소드에서 사용하십시오.