yii rules如何添加一个非数据库字段的验证?

比如我想添加一个A字段的验证,但数据库里没有,这个时候会报错,有什么参数可以设置吗?

阅读 5.1k
5 个回答
namespace common\models;

use Yii;

/**
 * This is the model class for table "{{%org_class}}".
 *
 * @property string $id
 * @property string $name
 * @property string $org_id
 * @property string $description
 */
class OrgClass extends \yii\db\ActiveRecord
{
    public $phone;//数据库中没有的字段
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return '{{%org_class}}';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['id','phone'], 'required'],
            [['id', 'org_id'], 'string', 'max' => 32],
            [['name'], 'string', 'max' => 128],
            [['description'], 'string', 'max' => 256],
            [['phone'],'integer','length'=>'11'],//对自己定义的字段添加验证
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id' => Yii::t('common', 'GUID'),
            'name' => Yii::t('common', '分类名称'),
            'org_id' => Yii::t('common', '创建该分类的组织ID,和dj_org表关联'),
            'description' => Yii::t('common', '分类简要描述'),
            'phone'=>Yii::t('common','手机')
        ];
    }

    /**
     * @inheritdoc
     * @return OrgClassQuery the active query used by this AR class.
     */
    public static function find()
    {
        return new OrgClassQuery(get_called_class());
    }
}

重写rules方法

class Model extends \yii\db\ActiveRecord
{
    //...
    public function rules() {
        $rules = parent::rules();
        $rules[] = [['phone'],'integer','message'=>'手机号码必须是数字'];
        return $rules;
    }
    //...
}

在model中先添加这个成员变量啊,参照高级版中注册登陆的表单模型。

先在rule上面声明这个变量

数据库会报错,说没这个字段

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题