这是我在view / _form.php
中的代码<tr>
<td>
<?php
$criteria = new CDbCriteria;
$criteria->order = 'ScriptArgumentClassType'; //or whatever field
echo CHtml::activeDropDownList($meta,**'[]ScriptArgumentClass_id'**,CHtml::listData(AutoScriptArgumentClass::model()->findAll`enter code here`($criteria),'id','ScriptArgumentClassType'), array('prompt'=>'Please select Argument class type'));
?>
</td>
<td>
<?php
$criteria = new CDbCriteria;
$criteria->order = 'TnType'; //or whatever field
echo CHtml::activeDropDownList($meta,**'[]Type_id'**,CHtml::listData(AutoTnType::model()->findAll($criteria),'id','TnType'), array('prompt'=>'Please select TN type'));
?>
</td>
<td>
<?php
$criteria = new CDbCriteria;
$criteria->order = 'service'; //or whatever field
echo CHtml::activeDropDownList($meta,'**'[]Service_id'**,CHtml::listData(Service::model()->findAll($criteria),'id','service'), array('prompt'=>'Please select Service'));
?>
</td>
<td>
<?php
$criteria = new CDbCriteria;
$criteria->order = 'Manufacture'; //or whatever field
echo CHtml::activeDropDownList($meta,'**[]Cpe_id'**,CHtml::listData(AutoCPE::model()->findAll($criteria),'id','Manufacture'), array('prompt'=>'Please select CPE'));
?>
</td>
</tr>
这是一排4列。实际上我已经使用jquery代码在单击AddNew时动态插入行。工作良好。现在我想用yii将它保存到数据库中。
$metadatas=$_POST['AutoTestScriptMeta'];
foreach ($metadatas as $metadata ) {
$meta=new AutoTestScriptMeta;
$meta->attributes = $metadata;
$meta->save(false);
}
在这里,我正在做多个行插入一个表格 它以这种方式插入2个输入的行值
1 0 0 0
0 2 0 0
0 0 3 0
0 0 0 2
1 0 0 0
0 3 0 0
0 0 4 0
0 0 0 2
而不是
1 2 3 2
1 3 4 2
而不是插入2行,它插入8行,每行包含一个列值。
以粗体显示代码(** **)。这就是我将它声明为数组的方式。
感谢任何帮助。如果您需要更多详细信息,请与我们联系。
答案 0 :(得分:2)
这里的问题很简单..
正在发生的事情是你的jquery正在为每个属性发布一个post请求,换句话说就是数据库中单列的数据。这就是为什么你在每个元数据变量中只得到一个与一个post请求相对应的字段集。
所以你可以做的就是在保存之前合并4-4个请求。或者让你的jquery提交所有4个下拉值......
我能为你做的第一个代码,
$metadatas=$_POST['AutoTestScriptMeta'];
$iterations=count($metadata)/4;
$clubbed_array=array();
for($i=0;$i<$iterations;$i++)
{
array_push($clubbed_array,array($metadata[$i*4+0][0],$metadata[$i*4+1][1],$metadata[$i*4+2][2],$metadata[$i*4+3][3]));
}
foreach ($clubbed_array as $clubbed_value ) {
$meta=new AutoTestScriptMeta;
$meta->attributes = $clubbed_value;
$meta->save();
}