Yii:所需表格数据的块

时间:2014-01-25 12:40:25

标签: php forms yii cactiverecord

试图在这里找到一个不错的方法......

我有一个表单,根据用户是否选择表单中的下拉列表,它会显示或隐藏一些其他表单字段。如果表单字段可见,我希望它们是必需的。如果它们不可见,我不希望它们被要求。

我正在尝试找出一种在我的模型规则中处理这个问题的方法 - 我在我的模型规则()函数中尝试了类似的东西:

$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始终为空,因此此代码不会出错。

这里有更好的方法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

尝试将此代码添加到模型的beforeValidate()方法中。它应该会帮助你。

但是在模型中创建$ rulesArray属性。在beforeValidate()方法中通过$ this-> rulesArray向此变量添加新规则,并在rules()方法中使用此变量。