在视图中编辑表格单元格

时间:2015-02-20 01:04:12

标签: arrays forms serialization yii html-table

Yii Version 1.1.15

我有一个模型,其中包含一个attribut中的序列化数组(表)。将此数组显示为视图中的表格可以正常工作。

但我想更新表格单元格,然后再次保存模型中序列化的数组。这不起作用。输出在那里停止(*)没有错误。

在这里你可以看到我做了什么:

$ model->表包含一个序列化数组。未序列化的数组如下所示:

array(
    array('dog', 'cat', 'cow'),
    array('meat', 'milk', 'gras'),
)

我在控制器中反序列化表:

controller:contactController.php

$model = Contact::model()->findByPk((int) $id);
$table = unserialize($model->input)

$this->render('contact_form', array(
        'table' => $table));
}

现在我想在表单中显示和编辑数组$ table作为html-table:

查看:contact_form.php

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

<table border="2">
    <?php foreach ($table as $row): ?>
        <tr>
            <?php foreach ($row as $value): ?>                
                <td>      
                    <!-- (*) output stops here, without errors -->
                    <?= $form->textArea($value, '', array('rows' => 3, 'cols' => 20)); ?>
                </td>
            <?php endforeach ?>
        </tr>
    <?php endforeach ?>
</table>

<div class="row buttons">
    <?php echo CHtml::submitButton("save"); ?>
</div>

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

输出在&#34; ... textArea ...&#34;。

之前停止

如果我只在视图中显示$ table(没有表单),它就像魅力一样:

<table border="2">
    <?php foreach ($table as $row): ?>
        <tr>
            <?php foreach ($row as $value): ?>
                <td><?= CHtml::encode($value) ?></td>
            <?php endforeach ?>
        </tr>
    <?php endforeach ?>
</table>

希望这有助于我:-)如何让这个好主意工作?

1 个答案:

答案 0 :(得分:0)

实际上你缺少CactiveForm.textArea(.......)

的参数

http://www.yiiframework.com/doc/api/1.1/CActiveForm#textArea-detail

textArea($ value,'',array('rows'=&gt; 3,'cols'=&gt; 20)); ?&GT;

而不是你的代码应该是

textArea($ model,$ value,array('rows'=&gt; 3,'cols'=&gt; 20)); ?&GT;