在视图中编辑 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)); ?>
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)); ?>