kartik \ builder \ Form с типом Form :: INPUT_WIDGET не работает в yii \ bootstrap \ modal - PullRequest
0 голосов
/ 07 декабря 2018

Я работаю над модулем, в котором мне нужно отобразить таблицу в базе данных с помощью GridView, и мне нужно иметь ActionColumn, где у меня есть значок.Если значок получил щелчок, он должен показать модал с формой, имеющей тип INPUT_WIDGET, которые являются select2, touchspin, rangeInput all из Kartik-v.Поэтому моя проблема в том, что INPUT_WIDGET ведет себя необычно, select2 продолжает загружаться, touchspin не вращается, а rangeInput не работает.

Страница просмотра с кодом GridView выглядит следующим образом:

<?php
    use kartik\builder\Form;
    use kartik\form\ActiveForm;
    use kartik\grid\GridView;
    use yii\bootstrap\Modal;
    use yii\helpers\Html;
    use yii\helpers\Url;

    $this->title = 'Update Activity Summary';
    $this->params['breadcrumbs'][] = ['label' => 'Activity Summaries', 'url' => ['index']];
    $this->params['breadcrumbs'][] = $this->title;
    $this->registerJs(
        "$(function(){
            // changed id to class
            $('.modalButton').click(function (){
                $.get($(this).attr('href'), function(data) {
                    $('#modal').modal('show').find('#modalContent').html(data)
                });
                return false;
            });
        });"
    );
?>
    <div class="activity-summary-create">
        <h1><?=Html::encode($this->title)?></h1>
<?php
    echo GridView::widget(
        [
            'dataProvider' => $dataprovider,
            'columns' => [
                'activity_name',
                'project.createdBy.emp_name',
                'createdBy.emp_name',
                'progress',
                'taken_hours',
                'est_hours',
                [
                    'attribute' => 'details',
                    'class' => 'kartik\grid\ExpandRowColumn',
                    'header' => 'details',
                    'width' => '50px',
                    'value' => function ($model, $key, $index, $column) {
                        return GridView::ROW_COLLAPSED;
                    },
                    'detail' => function ($model, $key, $index, $column) {
                        return Yii::$app->controller->renderPartial('activity_details', ['model' => $model]);
                    },
                    'expandIcon' => '<span class="glyphicon glyphicon-chevron-right"></span>',
                    'collapseIcon' => '<span class="glyphicon glyphicon-chevron-down"></span>',
                    'allowBatchToggle' => false,
                    'expandOneOnly' => true
                ],
                [
                    'class' => 'yii\grid\ActionColumn',
                    'header' => 'Update Summary',
                    'buttons' => [
                        'update_summary' => function ($url, $model, $key) {
                            return "<a class=\"modalButton\" href=\"?r=activity-summary/summary-edit&id=$model->activity_id\"><span class=\"glyphicon glyphicon-upload\" aria-hidden=\"true\"></span></a>";
                        }
                    ],
                    'template' => '{update_summary}'
                ]
            ]
        ]
    );
    Modal::begin(
        [
            'header' => 'Update Summary',
            'id' => 'modal',
            'size' => 'modal-lg'
        ]
    );
    echo "<div id='modalContent'></div>";
    Modal::end();
?>

Страница просмотра формы в модальном режиме выглядит следующим образом:

<?php
use kartik\builder\Form;
use kartik\form\ActiveForm;
use yii\helpers\Html;

$form = ActiveForm::begin(['type' => ActiveForm::TYPE_VERTICAL]);
echo Form::widget(
    [
        'model' => $model,
        'form' => $form,
        'attributes' => [
            'summary' => ['type' => Form::INPUT_TEXTAREA, 'options' => ['placeholder' => 'say about the activity..']]
        ]
    ]
);
echo Form::widget(
    [
        'model' => $model,
        'form' => $form,
        'columns' => 4,
        #    'compactGrid' => true,
        'attributes' => [
            'taken_hours' => [
                'type' => Form::INPUT_WIDGET,
                'widgetClass' => '\kartik\touchspin\TouchSpin'
            ],
            'actual_date' => [
                'type' => Form::INPUT_WIDGET,
                'widgetClass' => '\kartik\select2\Select2'
            ],
            'progress_added' => [
                'type' => Form::INPUT_WIDGET,
                'label' => Html::label('Progress (%)'),
                'widgetClass' => '\kartik\range\RangeInput',
                'options' => ['width' => '100%',
                    'html5Container' => ['style' => 'width:100px'],
                    'html5Options' => ['min' => 0, 'max' => 100],
                    'addon' => ['append' => ['content' => '%']]
                ]
            ],
            'category_id' => [
                'type' => Form::INPUT_WIDGET,
                'widgetClass' => '\kartik\select2\Select2',
                'options' => [
                    'data' => $data['Category']
                ]
            ],
            'actions' => [
                'type' => Form::INPUT_RAW,
                'value' => Html::submitButton(
                    'Submit',
                    ['class' => 'btn btn-primary ml-2']
                )
            ]
        ]
    ]
);
ActiveForm::end();

Изображение GridView со значком для запуска модального

enter image description here

Изображение модальной формы, имеющей INPUT_WIDGET

enter image description here

Заранее спасибо.

...