2013-11-25 68 views
0

我正在學習YII,並且遇到了一個問題。我試圖創建一個表單,但無法從控制器中獲取表單中的值。我不明白我做錯了什麼。 這是我的無法在控制器中獲取表單值yii

(模型)Logindetails.php

class Logindetails extends CActiveRecord {    
public $pass; 
    //rest of the coding 

public function rules() { 
    return array(
     array('password', 'length', 'max'=>20), 
    ); 
} 

(視圖)_form.php這個

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'logindetails-form', 
)); ?> 

<div class="row"> 
    <?php echo $form->labelEx($model,'pass'); ?> 
    <?php echo $form->textField($model,'pass',array('size'=>20,'maxlength'=>20)); ?> 
    <?php echo $form->error($model,'pass'); ?> 
</div> 
<div class="row buttons"> 
    <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?> 
</div> 
<?php $this->endWidget(); ?> 

控制器

public function actionCreate(){ 
    $model=new Logindetails; 
    // Uncomment the following line if AJAX validation is needed 
    // $this->performAjaxValidation($model); 

    if(isset($_POST['Logindetails'])) { 
     $model->attributes=$_POST['Logindetails']; 
     if(isset($model->pass)) { 
      echo 'its present'; 
     } else { 
      echo 'its absent'; 
     } 

    } 

    $this->render('create',array(
     'model'=>$model, 
    )); 
} 

它不斷向我展示它缺席。爲什麼我有這個問題?

+0

而不是echo echo die($ _ POST ['Logindetails'] ['pass']) – Kalpit

回答

1

從上面的代碼中,您只需更改控制器中的條件。

if(isset($model->pass)) 

if(isset($_POST['Logindetails']['pass'])) 

OR 

if($model->pass != "")) 

你可以調試你的代碼來檢查任何文本字段的值來不來。

public function actionCreate(){ 
    $model=new Logindetails; 
    // Uncomment the following line if AJAX validation is needed 
    // $this->performAjaxValidation($model); 

    if(isset($_POST['Logindetails'])) { 
     $model->attributes=$_POST['Logindetails']; 

     print_r($model->attributes); //check either the values are coming or not. 

     echo $model->pass ; 

     exit; // finish here the program. 

     if(isset($model->pass)) { 
      echo 'its present'; 
     } else { 
      echo 'its absent'; 
     } 

    } 

    $this->render('create',array(
     'model'=>$model, 
    )); 
} 

我認爲這會對您有所幫助。

謝謝。

-1

(模型)Logindetails.php

您必須添加規則,

class Logindetails extends CActiveRecord {    
public $pass; 

public function rules() { 
    return array(
     array('password', 'length', 'max'=>20), 
     **array('pass', 'length', 'max'=>20),** 
    ); 
} 

加入後,你檢查$model->pass值在控制器接收。