Yii 将数组作为属性从表单传递

Yii 将数组作为属性从表单传递,yii,Yii,在我的模型中,我有属性规范: class Category extends CActiveRecord { private $_specifications = array(); public function getSpecifications() { return $this->_specifications; } public function

在我的模型中,我有属性规范:

    class Category extends CActiveRecord
    {
        private $_specifications = array();

        public function getSpecifications()
        {
                    return $this->_specifications;
        }

        public function setSpecifications($specifications)
        {
                    $this->_specifications = implode(', ', $specifications);
        }
所以我希望规范是一个数组

我的视图文件:

<div id="specifications" class="row">
    <?php echo $form->labelEx($model,'specifications'); ?>
    <?php echo $form->textField($model,'specifications',array('rows'=>6, 'cols'=>50, 'name'=>'Category[specifications][0]', 'class' => 'clonedInput')); ?>
    <?php echo $form->textField($model,'specifications',array('rows'=>6, 'cols'=>50, 'name'=>'Category[specifications][1]', 'class' => 'clonedInput')); ?>
    <?php echo $form->error($model,'specifications'); ?>
</div>
我已尝试禁用编码:

<?php echo $form->textField($model,'specifications',array('encode'=>false, 'rows'=>6, 'cols'=>50, 'name'=>'Category[specifications][0]', 'class' => 'clonedInput')); ?>
<?php echo $form->textField($model,'specifications',array('encode'=>false, 'rows'=>6, 'cols'=>50, 'name'=>'Category[specifications][1]', 'class' => 'clonedInput')); ?>

谁能给我一个建议,我应该怎么做才能从表单传递数组?谢谢。

如何将数组传递给单个文本字段?它应该显示什么

您可以为此创建虚拟属性

在模型中:

private $_specifications = array();

public function getSpecifications()
{
    return implode(', ', $this->_specifications);
}
视图可以保持不变

编辑:

当然,如果希望能够写入属性,也需要setter

public function setSpecifications($specifications)
{
    $this->_specifications = explode(', ', $specifications);
}

请参阅

如何将数组传递给单个文本字段?它应该显示什么

您可以为此创建虚拟属性

在模型中:

private $_specifications = array();

public function getSpecifications()
{
    return implode(', ', $this->_specifications);
}
视图可以保持不变

编辑:

当然,如果希望能够写入属性,也需要setter

public function setSpecifications($specifications)
{
    $this->_specifications = explode(', ', $specifications);
}

请参阅

,因为您的
规范
属性是一个数组,您只需创建一个循环来显示相应的输入,例如:

foreach ($model->specifications as $s)
{
  echo Chtml::textField('Category[specifications][]', $s, array('rows'=>6, 'cols'=>50, 'class' => 'clonedInput'));
}

由于
specifications
属性是一个数组,因此只需创建一个循环来显示相应的输入,例如:

foreach ($model->specifications as $s)
{
  echo Chtml::textField('Category[specifications][]', $s, array('rows'=>6, 'cols'=>50, 'class' => 'clonedInput'));
}

我想规格会显示两次。



我想规范会显示两次。

那么调用这个函数应该放在哪里呢?没有地方,因为我写了
视图可以保持不变。
;)当您指定变量和虚拟属性(getXyz)时,Yii会自动检查它们。您还可以编写
$model=newmymodel();echo$型号->规格内爆()当您指定变量和虚拟属性(getXyz)时,Yii会自动检查它们。您还可以编写
$model=newmymodel();echo$型号->规格内爆():传递的参数无效我已添加:如果(isset($this->_specifications))出现错误:属性“Category.specifications”为只读。能否使用新代码和更新的方法更新帖子?