0

ここでまともなアプローチを見つけようとしています...

ユーザーがフォームでドロップダウンを選択するかどうかに基づいて、他のいくつかのフォームフィールドを表示または非表示にするフォームがあります。フォーム フィールドが表示されている場合は、必須にする必要があります。表示されていない場合は、必須にしたくありません。

モデルルール内でこれを処理するためのアプローチを見つけようとしています-モデルルール()関数で次のようなことを試しました:

$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 が常に空であるため、このコードは機能しません。

ここでより良いアプローチは何ですか?

ありがとう。

4

1 に答える 1

0

このコードをモデルの beforeValidate() メソッドに追加してみてください。それはあなたを助けるはずです。

ただし、モデルに $rulesArray プロパティを作成してください。beforeValidate() メソッドで $this->rulesArray を介してこの変数に新しいルールを追加し、この変数を rules() メソッドで使用します。

于 2014-01-25T12:43:53.133 に答える