在表单中添加多个模型记录表单-收集表格输入yii
我有点迷路了。我正在关注这一点。我有一个产品表单,在产品表单中我有一个属性表单,比如颜色/大小。由于控制器中的循环,我在理解本教程时遇到困难。所以我得到它检查记录的数量并循环它,但是如果没有记录呢。好像教程说要创建一个新模型。当然可以。但是,如果没有记录并告诉它创建一个新记录,您怎么可能在视图中循环它呢。也许我没有正确理解这一点 我只是想添加3个记录,空白或填写。没有添加额外记录的js。试着先理解这一点 控制器:在表单中添加多个模型记录表单-收集表格输入yii,yii,Yii,我有点迷路了。我正在关注这一点。我有一个产品表单,在产品表单中我有一个属性表单,比如颜色/大小。由于控制器中的循环,我在理解本教程时遇到困难。所以我得到它检查记录的数量并循环它,但是如果没有记录呢。好像教程说要创建一个新模型。当然可以。但是,如果没有记录并告诉它创建一个新记录,您怎么可能在视图中循环它呢。也许我没有正确理解这一点 我只是想添加3个记录,空白或填写。没有添加额外记录的js。试着先理解这一点 控制器: public function getProdAttr($id) {
public function getProdAttr($id) {
$items = array();
if (isset($_POST['ProductAttribute']) ) {
$items = ProductAttribute::model()->findAllByAttributes(array('product_id',$id));
if($items!==null){
foreach ($_POST['ProductAttribute'] as $item) {
$items[] = ProductAttribute::model()->findByPk($item['product_attribute_id']);
}
}
else $items[] = new ProductAttribute();
}
return $items;
}
public function actionUpdate($id)
{
$model=$this->loadModel($id);
$attributes=$this->getProdAttr($id);
if(isset($_POST['ProductAttribute']))
{
$valid=true;
foreach($attributes as $i=>$attribute)
{
if(isset($_POST['ProductAttribute'][$i]))
$attribute->attributes=$_POST['ProductAttribute'][$i];
$valid=$attribute->validate() && $valid;
}
if($valid)
$attributes->save();
}
//stuff from product model
}
视图:
//产品模型表单的内容
名称描述价格
//这里丢了,如果没有记录呢?
您解决这个问题了吗?我找到了萨米人没有用这个。为了在表单中添加另一个模型,我在模型中使用了aftersave()
方法并添加了另一个模型的信息。从表单中,我使用了setState
,然后稍后检索它。
//stuff for product model form
<div class="form">
<?php echo CHtml::beginForm(); ?>
<table>
<tr><th>Name</th><th>Description</th><th>Price</th></tr>
<?php foreach($attributes as $i=>$attribute): ?> //lost here, what if there's no records?
<tr>
<td><?php echo CHtml::activeTextField($attribute,"[$i]name"); ?></td>
<td><?php echo CHtml::activeTextArea($attribute,"[$i]description"); ?></td>
<td><?php echo CHtml::activeTextField($attribute,"[$i]cost"); ?></td>
</tr>
<?php endforeach; ?>
</table>
</div>