2013-12-11 39 views
0

我使用Yii用户,并对user/views/user/registration.php文件进行了一些修改。注册表格后栏为空

由于某种原因,即使我填写名字和姓氏,它仍然说我把这些字段留空。任何想法为什么?

$form=$this->beginWidget('bootstrap.widgets.TbActiveForm', array(
    'id'=>'registration-form', 
    'type'=>'vertical', 
    'enableClientValidation'=>true, 
    'clientOptions'=>array(
     'validateOnSubmit'=>true, 
    ), 
)); 


<?php echo $form->textField($model,'email', array('class' => 'input-block-level', 'placeholder' => $model->getAttributeLabel('email'))); ?> 

     <?php echo $form->passwordField($model,'password', array('class' => 'input-block-level', 'placeholder' => $model->getAttributeLabel('password'))); ?> 

     <?php echo $form->passwordField($model,'verifyPassword', array('class' => 'input-block-level', 'placeholder' => $model->getAttributeLabel('verifyPassword'))); ?> 

     <p class="text-seperator"> about you </p> 

     <?php echo $form->textField($profile,'firstname', array('class' => 'input-block-level', 'placeholder' => $model->getAttributeLabel('firstname'), 'maxlength'=> 255)); ?> 

     <?php echo $form->textField($profile,'lastname', array('class' => 'input-block-level', 'placeholder' => $model->getAttributeLabel('lastname'), 'maxlength'=> 255)); ?> 

,并在我的user/models/registrationform.php我有这个

class RegistrationForm extends User { 
     public $firstname; //added 
     public $lastname; //added 
     public $verifyPassword; 
     public $verifyCode; 

     public function rules() { 
      $rules = array(
       array('firstname, lastname, password, verifyPassword, email', 'required'), 
       array('firstname', 'length', 'max'=>225, 'min' => 3,'message' => UserModule::t("Incorrect First Name (length between 3 and 225 characters).")), 
       array('lastname', 'length', 'max'=>225, 'min' => 3,'message' => UserModule::t("Incorrect Last Name (length between 3 and 225 characters).")), 

......... 
} 
} 

使用他们用这种原始代码填写名字和姓氏...

$profileFields=Profile::getFields(); 
     if ($profileFields) { 
      foreach($profileFields as $field) { 
      ?> 
    <!--div class="row"--> 
     <?php echo $form->labelEx($profile,$field->varname); ?> 
     <?php 
     if ($widgetEdit = $field->widgetEdit($profile)) { 
      echo $widgetEdit; 
     } elseif ($field->range) { 
      echo $form->dropDownList($profile,$field->varname,Profile::range($field->range)); 
     } elseif ($field->field_type=="TEXT") { 
      echo$form->textArea($profile,$field->varname,array('rows'=>6, 'cols'=>50)); 
     } else { 
      echo $field->varname.'<br />'; 
      echo $form->textField($profile,$field->varname,array('size'=>60,'maxlength'=>(($field->field_size)?$field->field_size:255))); 
     } 
     ?> 
     <?php echo $form->error($profile,$field->varname); ?> 
    <!--/div--> 
      <?php 
      } 
     } 
+0

看来你似乎在使用2个不同的模型$ profile和$ model,为什么? – rabidmachine9

+0

原代码使用两者。从2个不同的表中读取 – user2636556

+0

好吧,但似乎你只使用一个模型...也许你应该改变一切到$模型? – rabidmachine9

回答

0

我认为你需要改变这个,

你已通过$model在这里:

<?php echo $form->textField($model,'email', array('class' => 'input-block-level', 'placeholder' => $model->getAttributeLabel('email'))); ?> 

,但你在这里给$profile

<?php echo $form->textField($profile,'firstname', array('class' => 'input-block-level', 'placeholder' => $model->getAttributeLabel('firstname'), 'maxlength'=> 255)); ?> 

如果你看看生成html,你会发现,所产生的输入具有不同的名称

+0

里面的名字一样的东西。更新了我的问题.. – user2636556

0

我不知道为什么这个工程(将是伟大的是有人能详细解释)

但问题是这里..

public function rules() { 
      $rules = array(
       array('firstname, lastname, password, verifyPassword, email', 'required'), 
       array('firstname', 'length', 'max'=>225, 'min' => 3,'message' => UserModule::t("Incorrect First Name (length between 3 and 225 characters).")), 
       array('lastname', 'length', 'max'=>225, 'min' => 3,'message' => UserModule::t("Incorrect Last Name (length between 3 and 225 characters).")), 

......... 
} 
} 

名字,姓氏当这个被删除有用。它仍然按需要设置。