Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 哎。申请表。添加有关用户公司的信息+;一种形式的几种商品_Php_Forms_Yii_Crud_Yii Relations - Fatal编程技术网

Php 哎。申请表。添加有关用户公司的信息+;一种形式的几种商品

Php 哎。申请表。添加有关用户公司的信息+;一种形式的几种商品,php,forms,yii,crud,yii-relations,Php,Forms,Yii,Crud,Yii Relations,不知道这是否是一个典型的问题,但不知道如何实现它。 3个表: 应用它的关系是: return array( 'company_info' => array(self::HAS_ONE, 'AppCompany', 'applicant_id'), 'region'=>array( self::HAS_ONE,'AppRegion',array('company_region_id'=>'id'), 'thr

不知道这是否是一个典型的问题,但不知道如何实现它。 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')   
    );
return array(
    'company'=>array(self::BELONGS_TO, 'AppCompany', 'company_id'),
    );
App.goods服务。关系:

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')   
    );
return array(
    'company'=>array(self::BELONGS_TO, 'AppCompany', 'company_id'),
    );
因此,一个用户添加有关其公司的信息(公司名称、注册日期等),然后添加该公司生产的一些商品/服务。如何在一个表单中收集、更新和查看所有这些信息?可能吗

我如何看待这一点: 用户添加一些信息,并满足字段:“商品和服务及其百分比”和两个字段-“商品和服务”和“百分比”,并添加更多按钮,他有6个商品,他想添加。因此,他点击AddMore按钮,每当下面的新字段出现时。但货物限制为5,因此在5个字段中有信息后,按钮将变为非活动状态

在“提交”按钮之后,所有这些信息都记录到它的表中。它可以从更新按钮上的表中获取,并且可以在一个CDetailView中查看

请告诉我,至少在一般情况下如何实施谢谢

更新 好的,一些工作已经完成(不知道是否正确,但是…):

我使用了这个扩展:

现在我有:

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;
}
在my_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>

以及货物/\形式的子表单:

<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);
?>


这是可能的。使用javascript,您应该在视图中创建其他项,在控制器操作中,您将获得包含所有数据的$\u POST,在一个事务中填充和验证所有模型。在“更新操作”视图中,您将使用php foreach显示相关模型


有一种方法对你有用。另请参见注释。

如此大而详细的示例。完美的再次感谢你!我可以请你明天看这个问题吗。我将尝试实现该示例,如果您能回答一些过问,我将不胜感激(如果有问题,我将更新ofc:),再次感谢您