【发布时间】:2014-04-19 08:22:39
【问题描述】:
不知道,如果这是一个典型的问题,但不知道如何实现它。 3张桌子: 应用。关系:
return array(
'company_info' => array(self::HAS_ONE, 'AppCompany', 'applicant_id'),
'region'=>array(
self::HAS_ONE,'AppRegion',array('company_region_id'=>'id'),
'through'=>'company_info'
),
'sector'=>array(
self::HAS_ONE,'AppSector',array('company_sector_id'=>'id'),
'through'=>'company_info'
),
);
应用公司。关系:
return array(
'application' => array(self::BELONGS_TO, 'Application', 'applicant_id'),
'region' => array(self::BELONGS_TO, 'AppRegion', 'company_region_id'),
'sector' => array(self::BELONGS_TO, 'AppSector', 'company_sector_id'),
'goodsservices' => array(self::HAS_MANY, 'AppGoodsServices', 'company_id')
);
App.GoodsServices。关系:
return array(
'company'=>array(self::BELONGS_TO, 'AppCompany', 'company_id'),
);
因此,一位用户添加了有关其公司的信息(company_name、date_of_registration 等),然后添加了该公司生产的一些商品/服务。如何以一种形式收集、更新和查看所有这些信息?有可能吗?
我怎么看这个: 用户添加一些信息并满足以下字段:“商品和服务及其百分比”和两个字段 - “商品和服务”和“百分比”以及添加更多按钮,他有 6 种商品要添加。所以,他点击添加更多按钮,每次出现下面的新字段。但是商品限制是5个,所以在5个字段有信息后按钮变得无效。
在提交按钮之后,所有这些信息都会记录到它的表中。它可以从 UPDATE 按钮上的表中获取,并且可以在一个 CDetailView 中查看。
请,至少在一般情况下如何实施。 谢谢
更新 好的,有些工作完成了(不知道对不对,但是……):
我使用了这个扩展:http://www.yiiframework.com/extension/esaverelatedbehavior/
现在我有:
public function actionCreate()
{
$model=new Application;
// Uncomment the following line if AJAX validation is needed
$this->performAjaxValidation($model);
if(isset($_POST['Application']))
{
$model->attributes=$_POST['Application'];
if(isset($_POST['AppGoodsServices']))
{
$model->goodsservices = $_POST['AppGoodsServices'];
}
if ($model->saveWithRelated('goodsservices'))
{
$this->redirect(array('view', 'id' => $model->id));
} else {$model->addError('goodsservices', 'Error occured while saving goods/services.'); }
}
$this->render('create',array(
'model'=>$model,
));
}
public function actionUpdate($id)
{
$model=$this->loadModel($id);
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Application']))
{
$model->attributes=$_POST['Application'];
if(isset($_POST['AppGoodsServices']))
{
$model->goodsservices = $_POST['AppGoodsServices'];
}
if ($model->saveWithRelated('goodsservices'))
{
$this->redirect(array('view', 'id' => $model->id));
} else {$model->addError('goodsservices', 'Error occured while saving goods/services.'); }
}
$this->render('update',array(
'model'=>$model,
));
}
public function loadModel($id)
{
$model=Application::model()->findByPk($id);
if($model===null)
throw new CHttpException(404,'The requested page does not exist.');
return $model;
}
在我的 _form.php 中
<div id="goodsservices">
<?php
$index = 0;
foreach ($model->goodsservices as $id => $goods):
$this->renderPartial('goods/_form', array(
'model' => $goods,
'index' => $id,
));
$index++;
endforeach;
?>
</div>
以及商品/_form中的子表单:
<div style="margin-bottom: 20px; width:100%; clear:left;" class="crow">
<div class="row" style="float: left;">
<?php echo CHtml::activeLabelEx($model, '['.$index.']goods_and_services'); ?>
<?php echo CHtml::activeTextField($model, '['.$index.']goods_and_services', array('size' => 30, 'maxlength' => 150)); ?>
<?php echo CHtml::error($model, '['.$index .']goods_and_services'); ?>
</div>
<div class="row" style="float: left;">
<?php echo CHtml::activeLabelEx($model, '['.$index .']percentage'); ?>
<?php echo CHtml::activeTextField($model, '['.$index.']percentage', array('size' => 5)); ?>
<?php echo CHtml::error($model, '['.$index.']percentage'); ?>
</div>
<div class="row" style="float: left;">
<?php echo CHtml::link('Delete', '#', array('onclick' => 'deleteGoods(this, '.$index.'); return false;'));
?>
</div>
</div>
<div style="clear: both;"></div>
<?php
Yii::app()->clientScript->registerScript('deleteGoods', "
function deleteGoods(elm, index)
{
element=$(elm).parent().parent();
/* animate div */
$(element).animate(
{
opacity: 0.25,
left: '+=50',
height: 'toggle'
}, 500,
function() {
/* remove div */
$(element).remove();
});
}", CClientScript::POS_END);
?>
一切正常,但我不明白如何为儿童(商品服务)模型制作批量 CREATE。现在它只向我显示更新形式的孩子(我已经将一些记录直接放入数据库),每个附近都有 DELETE 按钮。但是如何实现 CREATE?那么,一个空行应该是可见的,我可以在点击“添加行”时添加其他行?
【问题讨论】:
标签: php forms yii crud yii-relations