php - 如果表单属性值为空,则使用 Yii 规则验证更改属性名称

标签 php yii yii-cformmodel

我有一个扩展 Yii CFormModel 的模型,我想定义一个验证规则来检查属性值是否为空 - 如果是这样- 将属性名称设置为空字符串,而不是更改输入值。

这种情况是否可能,或者验证规则仅用于警告和/或输入值的更改?

任何帮助将不胜感激。

下面是我的模型的示例代码:

class LoginForm extends CFormModel
{
    public $firstName;
    public $lastName;

    public function rules()
    {
        return array(
            array('firstName, lastName', 'checkIfEmpty', 'changeAttributeName'),
        );
    }
    // some functions
}

最佳答案

不确定您的用例是否非常优雅,但以下应该可行:

class LoginForm extends CFormModel
{
    public $firstName;
    public $lastName;

    public function rules()
    {
        return array(
            array('firstName, lastName', 'checkIfEmpty'),
        );
    }

    public function checkIfEmpty($attribute, $params) 
    {
        if(empty($this->$attribute)) {
            unset($this->$attribute);
        }
    }

    // some functions
}

根据 hamed 的回复,另一种方法是使用 beforeValidate() 函数:

class LoginForm extends CFormModel
{
    public $firstName;
    public $lastName;

    protected function beforeValidate()
    {
        if(parent::beforeValidate()) {
            foreach(array('firstName, lastName') as $attribute) {
                if(empty($this->$attribute)) {
                    unset($this->$attribute);
                }
            }
        }
    }

}

关于php - 如果表单属性值为空,则使用 Yii 规则验证更改属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28878371/

相关文章:

php - 结帐页面中的 Woocommerce 付款方式检测

php - Symfony:更改请求基类并更新测试环境

php - CModel 对比 CFormModel 对比 CActiveRecord

php - 让用户选择他们想要的模块

php - 显示和隐藏按钮 (href=) 如果文件存在于服务器中

php - Yii2 Activerecord hasMany 与左连接

php - Yii::app()->user->yii 中的 setState?

yii - 如何在 Yii 框架上的 JQRelcopy 中添加 CJuiDatePicker

php - Yii - getActiveFormWidget() 在核心中返回错误类型?