在视图中编辑 table 个单元格

Edit table-cells in a view

Yii 版本 1.1.15

我有一个在属性中包含序列化数组 (table) 的模型。在视图中将此数组显示为 table 效果很好。

但我想更新 table-cells,然后再次保存在模型中序列化的数组。这是行不通的。输出停在那里 (*) 没有错误。

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

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

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

我反序列化控制器中的 table:

控制器:contactController.php

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

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

现在我想以 html-table:

的形式显示和编辑数组 $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(); ?>

输出在“... textArea ...”之前停止。

如果我只在视图中显示 $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>

希望这对我有所帮助 :-) 我怎样才能让这个好主意发挥作用?

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

的参数

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

textArea($value, '', array('rows' => 3, 'cols' => 20)); ?>

取而代之的是你的代码应该是

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