试图在这里找到一个不错的方法......
我有一个表单,根据用户是否选择表单中的下拉列表,它会显示或隐藏一些其他表单字段。如果表单字段可见,我希望它们是必需的。如果它们不可见,我不希望它们被要求。
我正在尝试找出一种在我的模型规则中处理这个问题的方法 - 我在我的模型规则()函数中尝试了类似的东西:
$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 :(得分:0)
尝试将此代码添加到模型的beforeValidate()方法中。它应该会帮助你。
但是在模型中创建$ rulesArray属性。在beforeValidate()方法中通过$ this-> rulesArray向此变量添加新规则,并在rules()方法中使用此变量。