我遇到了非常非常奇怪的事情。在 VirtualBox、Ubuntu、Apache2、PHP、MySQL 中工作,我从一个特定模型中得到了一些非常奇怪的行为。
我想添加输入同一字符串的多种语言版本的功能,比如产品名称。我使用 jQuery 用语言制作了漂亮的标签,并创建了临时数组来存储所有信息,使用 CActiveForm 小部件来收集和呈现数据。
<?php foreach($languages as $language): ?>
<div id="tab_<?=$language->code?>">
<div class="row">
<?php echo $form->labelEx($model,'name'); ?>
<?php echo $form->textField($model,"translations[$language->code][name]",array('size'=>60,'maxlength'=>128)); ?>
<?php echo $form->error($model,"translations[$language->code][name]"); ?>
</div>
</div>
[...]
这就是我将数据收集到 $translations 数组中的方式。这是我的 $translations 数组:
$translations = array(
'name' => 'NewName',
'sub_name' => 'Subname'
);
然后我显然将它分配给 Controler 操作中的适当模型:
[...]
foreach ($translations as $key => $value){
$x = new Translations();
$x->language = $key;
$x->id = $product->id;
$x->name = $value['name'];
$x->sub_name = $value['sub_name']
$x->save();
}
[...]
现在还有其他字段,每个产品只有一个:
[...]
<div class="row">
<?php echo $form->labelEx($model,'something'); ?>
<?php echo $form->textField($model,'something',array('size'=>60,'maxlength'=>128)); ?>
<?php echo $form->error($model,"something"); ?>
</div>
</div>
而那些只是由
$product->save();
一切都在一个整洁的交易中。
然而....
我得到的结果是这样的(加入翻译和产品表):
id name subname something
1 NewN
2 NewName S
3 NewName Subname Som
4 NewName Subname Something
4 条记录,当我只添加 ONE.... 并且我输入更多文本时,会创建更多记录。按随机数量的字符分割,有时少到 4,有时多到 12。这是可重复的,但并非总是如此......我对这种行为完全目瞪口呆。
任何人都见过这样的事情并且可以阐明它吗?提前致谢!