@baetov

Как сделать чтобы модальное окно открывалось при переходе по ссылке на actionCreate?

всем привет подскажите пожалуйста,у меня есть класс article,при создании статьи(article) в контроллере в actionCreate у меня создается экземпляр класса редиректит на update,теперь в форме article есть связанное поле с классом Group,где по group_id в выпадающем списке я выбираю из списка групп,и теперь я хочу добавить кнопку чтобы при нажатии открывалось модальное окно и я мог сразу добавить группу не прыгая по страницам,но проблема в том что модально окно не открывается а вместо нее я получаю какие то иероглифы и что то похожее на gruoup/create(то есть есть инпут и кнопки сохранить и закрыть)

код моей формы article/_form
<?php

use app\models\Group;
use app\models\Subgroup;
use kartik\select2\Select2;
use yii\bootstrap\Modal;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use yii\widgets\Pjax;

/* @var $this yii\web\View */
/* @var $model app\models\Article */
/* @var $form yii\widgets\ActiveForm */
?>
<?php Pjax::begin(['id' => 'article-pjax-container','enablePushState' => false]) ?>
<div class="article-form">

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

    <div class="row"style="display: flex; align-items: center;">

        <div class="col-md-11">

            <?php
            try {
                echo $form->field($model, 'group_id')->widget(Select2::class, [
                    'data' => (new Group)->getList(),
                    'options' => [
                        'id' => 'group',
                        'prompt' => 'Выберите группу'
                    ]
                ])->label('Наименование группы');
            } catch (Exception $e) {
                echo $e->getMessage();
            } ?>
        </div>


        <div class="col-md-1">
            <?= Html::a('<span class="fa fa-plus"></span>', [
                    '/group/create',
                    'caller' => '/article/create',
//                    'pjaxReloadContainer' => '#article-pjax-container',
                 ], [
                        'role'=>'modal-remote',
                        'title'=> 'Добавить группу',
                        'class' => 'btn btn-default btn-block',
                ]);?>

        </div>

    </div>

    <?= $form->field($model, 'subgroup_id')->widget(Select2::classname(), [
        'data' => ArrayHelper::map(Subgroup::find()->andFilterWhere(['company_id' => Yii::$app->user->identity->company_id])->all(), 'id', 'name'),
        'language' => 'ru',
        'options' => ['placeholder' => 'выберите тип ...'],
        'pluginOptions' => [
            'allowClear' => true
        ],
    ]);?>
    <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?>

    <?= $form->field($model, 'comment')->textarea(['rows' => 6]) ?>


    <?php if (!Yii::$app->request->isAjax){ ?>
        <div class="form-group">
            <?= Html::submitButton('Сохранить',
                ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
        </div>
    <?php } ?>

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

</div>
<?php Pjax::end(); ?>
<?php Modal::begin([
    "id" => "ajaxCrudModal",
    "footer" => "",// always need it for jquery plugin
]) ?>
<?php Modal::end(); ?>

код моего контроллера group экшн create
public function actionCreate()
    {
        $request = Yii::$app->request;
        $model = new Group();
        $caller = $request->get('caller');

        if($request->isAjax){
            /*
            *   Process for ajax request
            */
            Yii::$app->response->format = Response::FORMAT_JSON;

            if($request->isGet){
                return [
                    'title'=> "Добавить Группу",
                    'content'=>$this->renderAjax('create', [
                        'model' => $model,
                    ]),
                    'footer'=> Html::button('Закрыть',['class'=>'btn btn-default pull-left','data-dismiss'=>"modal"]).
                                Html::button('Добавить',['class'=>'btn btn-primary','type'=>"submit"])

                ];
            }else {
                if ($model->load($request->post()) && $model->save()) {
                    return [
                        'forceReload' => $caller ? '': '#crud-datatable-pjax',
                        'size' => 'md',
                        'title' => "Создание новогй группы",
                        'content' => '<span class="text-success">Группа добавлена</span>',
                        'footer' => Html::button('Закрыть',
                                ['class' => 'btn btn-default pull-left', 'data-dismiss' => "modal"]) .
                            ($caller != null ?
                                Html::a('Вернуться ', [$caller],
                                    ['class' => 'btn btn-primary']) :
                                Html::a('Создать ещё', ['create'],
                                    ['class' => 'btn btn-primary', 'role' => 'modal-remote']))

                    ];

                } else {
                    return [
                        'title' => "Добавить Группу",
                        'content' => $this->renderAjax('create', [
                            'model' => $model,
                        ]),
                        'footer' => Html::button('Закрыть', ['class' => 'btn btn-default pull-left', 'data-dismiss' => "modal"]) .
                            Html::button('Добавить', ['class' => 'btn btn-primary', 'type' => "submit"])

                    ];

                }
            }
        }else{
            /*
            *   Process for non-ajax request
            */
            if ($model->load($request->post()) && $model->save()) {
                return $this->redirect(['view', 'id' => $model->id]);
            } else {
                return $this->render('create', [
                    'model' => $model,
                ]);
            }
        }
       
    }

вот при нажатии на плюсик хочу чтобы модалка открылась
5fcdbd9ac0509844069209.png
вот что я получаю
5fcdbddbe326c708810505.png

причем если изменить запись со страницы article/index то все работает
5fcdc03b4557e873930023.png5fcdc043747e3771230069.png5fcdc04ca7c8c615261511.png
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы