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 回答