表单和验证在yii中不起作用


form and validation not working in yii

这是我关于YII framework的第二个问题
我在YII framework中创建了一个表单。它没有发布任何数据。验证也不起作用。

这是我的控制器类的代码:

   class RegisterController extends Controller
   {
    public function actionIndex()
    {
        $model = new C_regsiter();
        if (isset($_POST['C_register'])) {
            // do something
            $model->data = $_POST['C_register'];
            $model->username = $_POST['C_register']['username'];
            $model->Password = $_POST['C_register']['Password'];
            $model->email = $_POST['C_register']['email'];
            if ($model->validate()) {
              //do something
          }
        } else {}
        $this->render('index', array(
            'model' => $model
        ));
    }
    }

这是我的模型类代码:

    class C_regsiter extends CFormModel{
    public $username;
    public $Password;
    public $email;
    public $data;
    protected  $id;
    public function rules(){
    return array(
    array('username,password,email','required','on'=>'Register'),
    array('email','email'),         
    );
    }
    public function attributelabel(){
    return array(
     'username'=>'User Name',
     'password'=>'Password',
     'email'=>'Email Address '
    ); 
    }
    }

这是我的View Class 的代码

   <div class="form">
   <?php echo CHtml::beginForm(); ?>
   <?php echo CHtml::errorSummary($model); ?>
   <div class="row">
   <?php  echo CHtml::activeLabel($model, 'username'); ?>
   <?php echo CHtml::activeTextField($model, 'username'); ?>
   <?php echo CHtml::error($model, 'username') ?>
   </div>
   <div class="row">
        <?php echo CHtml::activeLabel($model,'email'); ?>
        <?php echo TbHtml::activeEmailField($model , 'email') ?>
        <?php echo CHtml::error($model, 'email') ?>
   </div>
   <div class="row">
   <?php  echo CHtml::activeLabel($model, 'password'); ?>
   <?php  echo  CHtml::activePasswordField($model, 'Password');  ?>
   <?php echo CHtml::error($model, 'password') ?>
   </div>
   <div class="row">
     <?php echo CHtml::submitButton('Register') ;?>
   </div>
   <?php echo CHtml::endForm(); ?>  
   </p>

非常感谢您的帮助。

您必须设置模型属性,请在操作中尝试此操作

class RegisterController extends Controller
 {
    public function actionIndex()
    {
        $model = new C_regsiter();
       if (isset($_POST['C_register'])) {
            $model->attributes = $_POST['C_register'];
            if ($model->validate()) {
               //do something
        }
    }
    $this->render('index', array('model' => $model));
    }
 }

这不是因为模型名称中有拼写错误吗?C_regsiter而不是C_register,然后检查C_register POST数据。不管怎样,用这个。

public function actionIndex()
{
    $model = new C_regsiter();
    $data = Yii::app()->request->getPost('C_regsiter');
    if ($data) {
        $model->setAttributes($data);
        if ($model->validate()) {
            // ....
        }
    }
    $this->render('index', array(
        'model' => $model
    ));
}