【发布时间】:2013-12-26 10:32:34
【问题描述】:
作为 Yii 的初学者,我有一个问题,我想在迭代中创建模型。例如,我想为 30 个学生创建结果模型。如何在迭代中创建这些模型?我不能硬编码,因为学生人数可能因班级而异。 在这种方法中,我需要使用表格输入,但为此我需要将每个模型的属性绑定到某个元素,例如
textArea
yii 权威指南提供此代码
<div class="form">
<?php echo CHtml::beginForm(); ?>
<table>
<tr><th>Name</th><th>Price</th><th>Count</th><th>Description</th></tr>
<?php foreach($items as $i=>$item): ?>
<tr>
<td><?php echo CHtml::activeTextField($item,"[$i]name"); ?></td>
<td><?php echo CHtml::activeTextField($item,"[$i]price"); ?></td>
<td><?php echo CHtml::activeTextField($item,"[$i]count"); ?></td>
<td><?php echo CHtml::activeTextArea($item,"[$i]description"); ?></td>
</tr>
<?php endforeach; ?>
</table>
<?php echo CHtml::submitButton('Save'); ?>
<?php echo CHtml::endForm(); ?>
</div><!-- form -->
但是如何在迭代中使用不同的模型名称填充我的数组,例如模型 1、模型 2、模型 3 等等? 谢谢 编辑:
public function actionCreate($exam=1,$class=1,$subject=4,$max=5,$min=4)
{
$students= Student::model()->findAllByAttributes(array('class_grade_id'=>$class));
//CVarDumper::Dump($students,100,true);
// die();
$i=0;
$data=array();
$model=new SubjectResult;
foreach($students as $key)
{
$data[$i]=new SubjectResult();
$i++;
}
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['SubjectResult']))
{
$model->attributes=$_POST['SubjectResult'];
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}
$this->render('create',array(
'model'=>$model,
'data'=>$data,
));
}
【问题讨论】:
-
每个学生都有单独的模型?
-
是的,实际上我必须为 30 名学生的结果创建一个模型。不是硬编码而是可变的。然后我必须以形式使用这些模型
-
每个学生存储在不同的表中?所以你有30张桌子。?这不是一个好习惯..
-
不确定你的问题是否正确,但是如果你要为很多表自动生成模型类,有一个名为 giic 的扩展可以自动完成
-
@kumar,不,我不这样做,实际上我必须输入 30 个学生的结果,所以我需要输入 30 个记录(每个学生一个)。现在我要批量创建。