【问题标题】:Yii Model attributes showing null/blank valuesYii 模型属性显示空/空白值
【发布时间】:2014-06-09 04:58:55
【问题描述】:

我在 Yii 中处理一个简单的表单。我之前能够访问模型属性值。

但现在我不能,因为它显示空白/null。

我不知道是什么问题以及如何解决。任何帮助将不胜感激。 谢谢。

这是表单代码。

    <div class="span4">
    <?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'testform',
    'enableClientValidation'=>true,
    'clientOptions'=>array(
        'validateOnSubmit'=>true,
    ),
    )); ?>

    <p class="note">Fields with <span class="required">*</span> are required.</p>

    <div class="row">
    <?php echo $form->labelEx($model,'sample'); ?>
    <?php echo $form->textField($model,'sample'); ?>
    <?php echo $form->error($model,'sample'); ?>
    </div>
    <div class="row buttons">
    <?php echo CHtml::submitButton('Login'); ?>
    </div>

   <?php $this->endWidget(); ?>
   </div>

这是模型的代码:

     class Questions extends CActiveRecord
    {
        public $sample;

    public function tableName()
    {
          return 'questions';
    }


    /**
     * @return array customized attribute labels (name=>label)
     */
    public function attributeLabels()
    {
        return array(
            'queid' => 'Queid',
            'question' => 'Question',
                        'sample'=>'sample textfield',
        );
    }

    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }

        public function getInput()
        {
            $data = $this->sample;
            echo "<script>alert('testing input'".$this->sample."')</script>";
            echo $this->sample;
            return $data;

        }
}

这是该页面的控制器代码:

  public function actiontest()
      {
        $model = new Questions();
        $data = "";
          if(isset($_POST["Questions"]))
          {
            $data = $model->getInput();
          }

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

【问题讨论】:

  • $model = new Questions();你做了一个新模型,它的属性可能没有预定义
  • 我应该如何以及在哪里定义它们?
  • 如果你已经保存了,也许加载它?!

标签: php yii model frameworks


【解决方案1】:

在你的控制器中, 你为什么使用$_POST['test']?这里的“test”是什么。您的型号名称是Questions

试试

if(isset($_POST["Questions"])) {
   $model->attributes = $_POST["Questions"];
   echo $model->sample ; // you will get the value of sample

 }

或

如果你想要属性值,你可以试试这个而不是你的 getInput() ,

 $data = $_POST['Questions']['sample'];

【讨论】:

  • 它显示错误,当我尝试使用 self 而不是 $this 时,那个未定义的类常量...
  • 我们通常在模型中访问像 $this->attribute 这样的属性值。但我什么也没得到或一个空白值。我以前使用过另外两个表单更改密码并忘记了密码。两者都正常工作。
  • 你试过 Questions::sample 而不是 self::sample 吗?
  • 如果我使用 Questions::sample 而不是 $this->sample。没有任何事情发生,只是一样......
  • 你能告诉我,代码,我们通常如何使用模型视图和控制器获取用户输入吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
  • 2020-04-18
相关资源
最近更新 更多