当"条件"时,更新操作无效。以活性形式YII2引入

时间:2017-05-24 10:47:07

标签: if-statement yii2

下面是_form.php(仅限条件)

 <?php if($model->certified =='n') :  ?>

        <?= $form->field($modelqm, 'q1')->textInput(['maxlength' => true]) ?>
        <?= $form->field($modelqm, 'q2')->textInput(['maxlength' => true]) ?>
        <?= $form->field($modelqm, 'q3')->textInput(['maxlength' => true]) ?>
        <?= $form->field($modelqm, 'q4')->textInput(['maxlength' => true]) ?>
        <?= $form->field($modelqm, 'q5')->textInput(['maxlength' => true]) ?>
        <?= $form->field($modelqm, 'q6')->textInput(['maxlength' => true]) ?>
        <?= $form->field($modelqm, 'q7')->textInput(['maxlength' => true]) ?>
        <?= $form->field($modelqm, 'q8')->textInput(['maxlength' => true]) ?>
        <?= $form->field($modelqm, 'q9')->textInput(['maxlength' => true]) ?>
        <?= $form->field($modelqm, 'q10')->textInput(['maxlength' => true]) ?>
        <?= $form->field($modelqm, 'q11')->textInput(['maxlength' => true]) ?>
        <?= $form->field($modelqm, 'q12')->textInput(['maxlength' => true]) ?>
        <?= $form->field($modelqm, 'q13')->textInput(['maxlength' => true]) ?>
        <?= $form->field($modelqm, 'q14')->textInput(['maxlength' => true]) ?>
        <?= $form->field($modelqm, 'q15')->textInput(['maxlength' => true]) ?>

 <?php else: ?> 

        <?= $form->field($modelqm, 'q16')->textInput() ?>
        <?= $form->field($modelcertificate, 'description')->dropDownList(
                                             ArrayHelper::map(CertificateDescription::find()->all(),'description','description'),
                                            [   'prompt'=>'select desc', 

                                            ]); ?>  

        <?= $form->field($modelcertificate, 'types')->dropDownList(
                                             ArrayHelper::map(CertificateType::find()->all(),'type','type'),
                                            [   'prompt'=>'select type', 

                                            ]); ?>    


        <?= $form->field($modelcertificate, 'file')->fileInput() ?>
        <?= $form->field($modelcertificate, 'validity')->textInput() ?>
    <?php endif; ?>

上面的代码工作正常(一旦表更新,导航到视图)。但是,当我更改 else 语句的位置时,就是在 *字段($ modelqm,&#39; q16&#39;) - &gt; textInput()?&gt;之后放置其他内容* (紧接下一行之后)更新没有发生。它只是使用输入的新值重新加载更新表单(页面),但这些值不会保存到数据库表中。

**我已经检查了div标签我没有任何未关闭的标签。在if和else条件下互换内容,但它没有解决问题。

这种行为可能是什么原因?有谁遇到过这种问题?我该如何解决这个问题

更新行动: -

public function actionUpdate()
{

    $id = Yii::$app->user->getId();
    $command = (new \yii\db\Query())
        ->select(['id'])
        ->from('supplier')
        ->where(['user_id' => $id])
        ->createCommand();

// returns all rows of the query result
    $rows = $command->queryAll();

    $model = $this->findModel($rows);


    $id1 = $model->id;
    $command1 = (new \yii\db\Query())
        ->select(['id'])
        ->from('supplier_noqm')
        ->where(['supplier_id' => $id1])
        ->createCommand();

// returns all rows of the query result
    $rows1 = $command1->queryAll();


    $modelqm = $this->findModel1($rows1);

    $command2 = (new \yii\db\Query())
        ->select(['id'])
        ->from('supplier_certificate')
        ->where(['supplier_id' => $id1])
        ->createCommand();

// returns all rows of the query result
    $rows2 = $command2->queryAll();


    $modelcertificate = $this->findSupplierCertificateModel($rows2);
    $modelsSupManpower = $model->supManpowers;
    $modelsSupCompanyid = $model->supCompanies;
    $modelsSupOtherplace = $model->supOtherplaces;


    if ($model->load(Yii::$app->request->post()) && $modelqm->load(Yii::$app->request->post()) && $modelcertificate->load(Yii::$app->request->post())) {
var_dump($model->validate(), $model->errors);die;
        $user = $this->findUserModel($model->user_id);
        $user->pin = $model->pin;
        $user->country = $model->country;
        $user->state = $model->state;
        $user->city = $model->city;
        $user->save();


        $oldIDs = ArrayHelper::map($modelsSupManpower, 'id', 'id');
        $modelsSupManpower = Model::createMultiple(SupManpower::classname(), $modelsSupManpower);
        Model::loadMultiple($modelsSupManpower, Yii::$app->request->post());
        $deletedIDs = array_diff($oldIDs, array_filter(ArrayHelper::map($modelsSupManpower, 'id', 'id')));

        $oldIDs = ArrayHelper::map($modelsSupCompanyid, 'id', 'id');
        $modelsSupCompanyid = Model::createMultiple(SupCompanyid::classname(), $modelsSupCompanyid);
        Model::loadMultiple($modelsSupCompanyid, Yii::$app->request->post());
        $deletedIDs = array_diff($oldIDs, array_filter(ArrayHelper::map($modelsSupCompanyid, 'id', 'id')));

        $oldIDs = ArrayHelper::map($modelsSupOtherplace, 'id', 'id');
        $modelsSupOtherplace = Model::createMultiple(SupOtherplace::classname(), $modelsSupOtherplace);
        Model::loadMultiple($modelsSupOtherplace, Yii::$app->request->post());
        $deletedIDs = array_diff($oldIDs, array_filter(ArrayHelper::map($modelsSupOtherplace, 'id', 'id')));


// ajax validation
        if (Yii::$app->request->isAjax) {
            Yii::$app->response->format = Response::FORMAT_JSON;
            return ArrayHelper::merge(
                ActiveForm::validateMultiple($modelsSupManpower),
                ActiveForm::validateMultiple($modelsSupOtherplace),
                ActiveForm::validate($model)
            );
        }

// validate all models
        $valid = $model->validate();
        $valid = $modelqm->validate() && $valid;
        $valid = $modelcertificate->validate() && $valid;
        $valid = Model::validateMultiple($modelsSupManpower) && $valid;
        $valid = Model::validateMultiple($modelsSupCompanyid) && $valid;
        $valid = Model::validateMultiple($modelsSupOtherplace) && $valid;


        if ($valid) {

            $transaction = \Yii::$app->db->beginTransaction();
            try {
                if ($flag = $model->save(false)) {
                    $modelqm->supplier_id = $model->id;
                    $modelcertificate->supplier_id = $model->id;
                    $modelqm->save(false);
                    if ($modelcertificate->file = UploadedFile::getInstance($modelcertificate, 'file')) {
                        $name = Yii::$app->user->identity->username;
                        $randnum = rand(pow(10, 5 - 1), pow(10, 5) - 1);
                        $imageName = $name . $randnum;

//$path = 'machinephotos/'.$imageName.'.'.$model->image->extension;
                        $modelcertificate->file->saveAs('certuploads/' . $imageName . '.' . $modelcertificate->file->extension);
                        $modelcertificate->filename = 'certuploads/' . $imageName . '.' . $modelcertificate->file->extension;
                        $modelcertificate->file = null;
                        $modelcertificate->save(false);

                    }
                    $model->file = null;
                    if (!($flag = $modelcertificate->save(false))) {

                        $transaction->rollBack();

                    }

                    if (!empty($deletedIDs)) {
                        SupManpower::deleteAll(['id' => $deletedIDs]);
                    }
                    foreach ($modelsSupManpower as $modelSupManpower) {
                        $modelSupManpower->supplier_id = $model->id;
                        if (!($flag = $modelSupManpower->save(false))) {
                            $transaction->rollBack();
                            break;
                        }
                    }

                    if (!empty($deletedIDs)) {
                        SupCompanyid::deleteAll(['id' => $deletedIDs]);
                    }
                    foreach ($modelsSupCompanyid as $modelSupCompanyid) {
                        $modelSupCompanyid->supplier_id = $model->id;
                        if (!($flag = $modelSupCompanyid->save(false))) {
                            $transaction->rollBack();
                            break;
                        }
                    }

                    if (!empty($deletedIDs)) {
                        SupOtherplace::deleteAll(['id' => $deletedIDs]);
                    }
                    foreach ($modelsSupOtherplace as $modelSupOtherplace) {
                        $modelSupOtherplace->supplier_id = $model->id;
                        if (!($flag = $modelSupOtherplace->save(false))) {
                            $transaction->rollBack();
                            break;
                        }
                    }


                }
                if ($flag) {
                    $transaction->commit();

                    return $this->redirect(['view', 'id' => $model->id]);
                }
          } catch (Exception $e) {
                $transaction->rollBack();
            }
        }
    }

    $model->load(Yii::$app->request->get());
    $model->production_scope = ArrayHelper::map($model->parts, 'part_name', 'part_name');
    $model->target_industry = ArrayHelper::map($model->industries, 'name', 'name');
    $model->material = ArrayHelper::map($model->materials, 'name', 'name');
    $model->inspection_specialities = ArrayHelper::map($model->inspections, 'name', 'name');

    return $this->render('update', [
        'model' => $model,
        'modelqm' => $modelqm,
        'modelcertificate' => $modelcertificate,
        'modelsSupManpower' => (empty($modelsSupManpower)) ? [new SupManpower] : $modelsSupManpower,
        'modelsSupCompanyid' => (empty($modelsSupCompanyid)) ? [new SupCompanyid] : $modelsSupCompanyid,
        'modelsSupOtherplace' => (empty($modelsSupOtherplace)) ? [new SupOtherplace] : $modelsSupOtherplace


    ]);

}

0 个答案:

没有答案