Yii2 在重定向中获取 url ID.在创造行动 [英] Yii2 getting the url ID in redirect. in create action

查看:23
本文介绍了Yii2 在重定向中获取 url ID.在创造行动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

就像我有一个视图 index.php(Gridview)- 链接到菜单管理讲师.

like I have a view index.php(Gridview)- linked to a Menu Manage Instructor.

从那里我点击特定讲师的编辑.

from there I click on edit for a specific instructor.

我得到的网址是这样的:

The URL I get is like:

admin/user/update-instructor?id=11

在这个页面中,我有多个选项卡,一个选项卡是 instructor_schedule,它又是一个网格视图,顶部有添加记录按钮.我可以添加记录点击添加记录没有任何问题.

In this page I have multiple tabs, one tab is instructor_schedule, which is again a grid view with add records button on top. I can add records clicking on add record without any issue.

我的问题是现在我希望表单页面重定向回页面

My problem is now I want the form page redirect back to the page

admin/user/update-instructor?id=11

我如何才能做到这一点?

How I can achieve that?

我尝试过:

return $this->redirect(['user/update-instructor','id' => $model->id]);

return $this->redirect(['user/update-instructor','id' => $model->instructor_id]);

但我收到错误信息id.

谢谢.

动作创建(ClassDurationController):

action Create(ClassDurationController):

public function actionCreate() {
        $model = new ClassDuration();
    $count = count(Yii::$app->request->post('ClassDuration', []));

                $classdurations[] =new ClassDuration();
                for($i = 1; $i < $count; $i++) {
                $classdurations[] = new ClassDuration();
            }


    //if ($model->load(Yii::$app->request->post()) && $model->save()) {
             if (Model::loadMultiple($classdurations, Yii::$app->request->post()) && Model::validateMultiple($classdurations)) {

                  foreach ($classdurations as $classduration) {
                         // var_dump($classdurations);
                      $classduration->instructor_id=$_POST['ClassDuration'][0]['instructor_id'];
                      $classduration->save(false);
                      }                 

        Yii::$app->getSession()->setFlash('successClass');

        //return $this->redirect(['view', 'id' => $model->id]);
                    return $this->redirect(['user/update-instructor','id' => $model->id]);
    }

    return $this->render('create', [
        'model' => $model,
        'classdurations' => $classdurations,
    ]);
}

动作更新(ClassDurationController):

Action Update(ClassDurationController):

public function actionUpdate($id,$tab='information') {
        $model = $this->findModel($id);

                $wd_instructor = ClassDuration::find('instructor_id')->where(['id'=>$id])->One();
                $wd_instructor_id = $wd_instructor->instructor_id;
                $classdurations = ClassDuration::find()->where(['instructor_id'=>$wd_instructor_id])->all();

                if (Model::loadMultiple($classdurations, Yii::$app->request->post()) && Model::validateMultiple($classdurations)) {
                     foreach($classdurations as $classduration){
                        $classduration->location_id=$_POST['ClassDuration'][0]['location_id'];
                        $classduration->save(false);
                    }
            Yii::$app->getSession()->setFlash('successClass');

            // return $this->redirect(['view', 'id' => $model->id]);
                        return $this->redirect(['user/update-instructor', 'id' => $model->instructor_id, 'tab' => 'instructor_schedule']);
        }

        return $this->render('update', [
            'model' => $model,    
                        'workingdays' => $classdurations,
        ]);
    }

ActionUpdateInstructor:

ActionUpdateInstructor:

public function actionUpdateInstructor($id,$tab='information') {
        $model = User::findOne($id);
        $uploadPath = 'web/instructor/' . $id;
        if (!file_exists($uploadPath)) {
            mkdir($uploadPath);
        }
        $profile = Instructor::find()->where(['user_id' => $id])->one();

        if ($profile) {
            $instructor_profile = $profile;
        } else {
            $instructor_profile = new Instructor;
            $instructor_profile->user_id = $id;
        }
        if ($id == 1) {
            $cls = 'hide';
        } else {
            $cls = '';
        }
        $title = "Update";

        $modelsRest = $model->rest;
        $modelsBreakTime = $model->breakTime;

        if (Yii::$app->request->isAjax && $model->load($_POST)) {
            Yii::$app->response->format = 'json';
            return \yii\bootstrap\ActiveForm::validate($model);
        }
        if (Yii::$app->request->isAjax && $instructor_profile->load($_POST)) {
            Yii::$app->response->format = 'json';
            return \yii\bootstrap\ActiveForm::validate($instructor_profile);
        }
        if ($model->load(Yii::$app->request->post()) && $instructor_profile->load(Yii::$app->request->post())) {

            $oldIDs = ArrayHelper::map($modelsRest, 'id', 'id');

            $modelsRest = Model::createMultiple(RestDays::classname(), $modelsRest);
            Model::loadMultiple($modelsRest, Yii::$app->request->post());

            $deletedIDs = array_diff($oldIDs, array_filter(ArrayHelper::map($modelsRest, 'id', 'id')));

            if (Yii::$app->request->isAjax) {
                Yii::$app->response->format = Response::FORMAT_JSON;
                return ArrayHelper::merge(
                    ActiveForm::validateMultiple($modelsRest),

                    ActiveForm::validate($model),
                    ActiveForm::validate($instructor_profile)
                );
            }

            if (trim($model->password) != '') {
                $model->setPassword($model->password);
            }

            $model->username = $model->email;

            $model->save();

            if ($model->user_role != '') {
                $assign = AuthAssignment::find()->where(['user_id' => $model->id])->One();
                $assign->item_name = $model->user_role;

                $assign->save();

            }
            $instructor_profile->file = UploadedFile::getInstance($instructor_profile, 'file');
            $instructor_profile->user_id = $model->id;

            if ($instructor_profile->file != '') {
                $instructor_profile->instructor_image = time() . '.' . $instructor_profile->file->extension;
            }

            $instructor_profile->save(false);

            if ($instructor_profile->file != '') {

                $uploadPath = 'web/instructor/' . $instructor_profile->user_id;
                if (!file_exists($uploadPath)) {
                    mkdir($uploadPath);
                }

                $instructor_profile->file->saveAs($uploadPath . '/' . $instructor_profile->instructor_image);

            }
            $valid = $model->validate();
            $valid = Model::validateMultiple($modelsRest) && $valid;

            if ($valid) {
                $transaction = \Yii::$app->db->beginTransaction();
                try {
                    if ($flag = $model->save(false)) {
                        if (!empty($deletedIDs)) {
                            RestDays::deleteAll(['id' => $deletedIDs]);
                        }

                        foreach ($modelsRest as $modelRests) {
                            $modelRests->instructor_id = $model->id;
                            if (!empty($modelRests->from_date) && !($flag = $modelRests->save(false))) {
                                $transaction->rollBack();
                                break;

                            }
                        }

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

        return $this->render('update_instructor', [
            'model' => $model,
            'modelsRest' => (empty($modelsRest)) ? [new RestDays] : $modelsRest,

            'instructor_profile' => $instructor_profile,
            'title' => $title,
            'cls' => $cls,

        ]);
    }

推荐答案

在你的操作中 Create(ClassDurationController) 你只分配给 $model

In your action Create(ClassDurationController) you assign to $model only

$model = new ClassDuration();

也许您应该插入另一个变量以从父级或

Maybe you should insert another variable to get id from parent or

return $this->redirect(['user/update-instructor','id' => $_POST['ClassDuration'][0]['instructor_id']]);

这篇关于Yii2 在重定向中获取 url ID.在创造行动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆