簡體   English   中英

在yii-user模塊中創建唯一字段

[英]Create a unique field in yii-user module

您好,現在我正在使用Yii用戶模塊。 我是新手,遇到了一些問題。 我在user/profileField/create創建agentKey配置文件字段。 現在我要使其獨特。 我需要更改以使其唯一並在不滿足條件時引發錯誤。

這是配置文件模型中的規則。

public function rules()
{
    if (!$this->_rules) {
        $required = array();
        $numerical = array();
        $float = array();       
        $decimal = array();
        $rules = array();

        $model=$this->getFields();

        foreach ($model as $field) {
            $field_rule = array();
            if ($field->required==ProfileField::REQUIRED_YES_NOT_SHOW_REG||$field->required==ProfileField::REQUIRED_YES_SHOW_REG)
                array_push($required,$field->varname);
            if ($field->field_type=='FLOAT')
                array_push($float,$field->varname);
            if ($field->field_type=='DECIMAL')
                array_push($decimal,$field->varname);
            if ($field->field_type=='INTEGER')
                array_push($numerical,$field->varname);
            if ($field->field_type=='VARCHAR'||$field->field_type=='TEXT') {
                $field_rule = array($field->varname, 'length', 'max'=>$field->field_size, 'min' => $field->field_size_min);
                if ($field->error_message) $field_rule['message'] = UserModule::t($field->error_message);
                array_push($rules,$field_rule);
            }
            if ($field->other_validator) {
                if (strpos($field->other_validator,'{')===0) {
                    $validator = (array)CJavaScript::jsonDecode($field->other_validator);
                    foreach ($validator as $name=>$val) {
                        $field_rule = array($field->varname, $name);
                        $field_rule = array_merge($field_rule,(array)$validator[$name]);
                        if ($field->error_message) $field_rule['message'] = UserModule::t($field->error_message);
                        array_push($rules,$field_rule);
                    }
                } else {
                    $field_rule = array($field->varname, $field->other_validator);
                    if ($field->error_message) $field_rule['message'] = UserModule::t($field->error_message);
                    array_push($rules,$field_rule);
                }
            } elseif ($field->field_type=='DATE') {
                $field_rule = array($field->varname, 'type', 'type' => 'date', 'dateFormat' => 'yyyy-mm-dd', 'allowEmpty'=>true);
                if ($field->error_message) $field_rule['message'] = UserModule::t($field->error_message);
                array_push($rules,$field_rule);
            }
            if ($field->match) {
                $field_rule = array($field->varname, 'match', 'pattern' => $field->match);
                if ($field->error_message) $field_rule['message'] = UserModule::t($field->error_message);
                array_push($rules,$field_rule);
            }
            if ($field->range) {
                $field_rule = array($field->varname, 'in', 'range' => self::rangeRules($field->range));
                if ($field->error_message) $field_rule['message'] = UserModule::t($field->error_message);
                array_push($rules,$field_rule);
            }
        }

        array_push($rules,array(implode(',',$required), 'required'));
        array_push($rules,array(implode(',',$numerical), 'numerical', 'integerOnly'=>true));
        array_push($rules,array(implode(',',$float), 'type', 'type'=>'float'));
        array_push($rules,array(implode(',',$decimal), 'match', 'pattern' => '/^\s*[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\s*$/'));
        $this->_rules = $rules;
    }
    return $this->_rules;
}

這通常在afaik上有效(盡管您需要進行修改以適合您的功能/模塊)

array('field_name','unique','message'=>'Error message in case of duplicate value entered'),

也請查看這些鏈接,這可能對您有用,

http://www.yiiframework.com/extension/unique-attributes-validator/

http://www.yiiframework.com/wiki/168/create-your-own-validation-rule/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM