首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >yii2通过post数据中缺少的renderAjax追加数据

yii2通过post数据中缺少的renderAjax追加数据
EN

Stack Overflow用户
提问于 2016-12-17 14:27:25
回答 1查看 950关注 0票数 0

我有两个模型A和B,在模型A表单中动态添加模型B,但当我单击创建按钮时,我没有在POST.where中获取模型B数据我做错了请帮助。

模型A表单(视图)

代码语言:javascript
运行
复制
       <?php
        use yii\helpers\Html;
        use yii\widgets\ActiveForm;
        use yii\helpers\Url;
        use yii\web\View;
        $script = <<< JS

        $.ajax({
        type     :'POST',            
        data: {total_form:1},
        cache    : true,
        url  : '/stag_str/web/index.php/activities/create',
        success  : function(data) {
        $('.p_scents').append(data);
        },
        });

        JS;
        $this->registerJs($script);
        ?>

        <div class="currency-form">

        <?php $form = ActiveForm::begin(); ?>

        <?= $form->field($model, 'currency_name')->textInput(['maxlength' => true,'style'=>'width:150px']) ?>
        <div class="p_scents"></div>
        <div class="form-group">
        <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
        </div>

        <?php ActiveForm::end(); ?>

        </div>

模型A控制器

代码语言:javascript
运行
复制
      public function actionCreate(){
        $model = new Currency();

        if ($model->load(Yii::$app->request->post())) {
        print_r($_POST);exit;
        return $this->redirect(['view', 'id' => $model->currency_id]);
        } else {
        return $this->render('create', [
        'model' => $model,
        ]);
        }
      }

我通过Ajax调用呈现的模型B表单

代码语言:javascript
运行
复制
            <?php

        use yii\helpers\Html;
        use yii\widgets\ActiveForm;

        /* @var $this yii\web\View */
        /* @var $model app\models\Activities */
        /* @var $form yii\widgets\ActiveForm */
        ?>

        <div class="activities-form">

         <?php $form = ActiveForm::begin(['id' => 'activity' ]); ?>

        <?= $form->field($model, 'activity_name')->textInput(['maxlength' => true]) ?>

        <?php ActiveForm::end(); ?>

        </div>

使用renderAjax的模型B操作

代码语言:javascript
运行
复制
            public function actionCreate()
        {
            $model = new Activities();

            if ($model->load(Yii::$app->request->post()) && $model->save()) {
                return $this->redirect(['view', 'id' => $model->activity_id]);
        } elseif ( Yii::$app->request->isAjax ){
           return $this->renderAjax('_form', [
                'model' => $model,
           ]);
        }

        }

保存模型表单A时,无法获取模型B表单数据。

EN

回答 1

Stack Overflow用户

发布于 2016-12-17 17:45:03

理想情况下,当您处理来自View的AJAX调用时。您必须为您的表单提供ID,如下所示;

代码语言:javascript
运行
复制
$form = ActiveForm::begin([ 'id' => 'activity-form' ]); 

在控制器中处理任何类型的请求时,在重新呈现窗体时必须首先检查请求的类型,如下所示

代码语言:javascript
运行
复制
elseif ( Yii::$app->request->isAjax ){
   return $this->renderAjax('_form', [
        'model' => $model,
   ]);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41195970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档