2015-04-09 5 views
0

Это мой второй вопрос, связанный с YII framework.
Я создал форму в YII framework. Он не публикует никаких данных. Также проверка не работает.форма и валидация не работают в yii

Вот код моего класса контроллера:

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 класса

<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> 

Любая помощь очень ценится.

ответ

0

вы должны установить модель атрибута попробовать это в вашем действии

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)); 
    } 
} 
+0

я трейд это, но ничего не работает .. – syedsafir

+0

объект (C_regsiter) [16] общественность 'имя пользователя' => нулевой публичной 'Пароль' => нулевой общественности 'электронная почта' => нулевой общественности " данные '=> нулевой защищен 'идентификатор'=> NULL частных '_errors'(CModel) => массив пустые частные '_validators'(CModel) => нулевой частный '_scenario'(CModel) => строка' register '(length = 8) private' _e '(CComponent) => null private' _m '(CComponent) => null – syedsafir

0

Разве это не потому, что у вас есть опечатка в названии модели? C_regsiter вместо C_register, и вы проверяете данные POST C_register. В любом случае используйте это.

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 
    )); 
} 
Смежные вопросы