переменные пост в кнопке

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
iamguruman
Сообщения: 237
Зарегистрирован: 2018.05.10, 08:26

переменные пост в кнопке

Сообщение iamguruman »

Код: Выделить всё

        if(Yii::$app->request->get('JpSearch')){
            echo Html::a('Подтверждаю отсуствие добавляемоего юридического лица', 
                ['/jps/jp/create'], 
                ['class' => 'btn btn-success',
                    'data' => [
                        'confirm' => Yii::t('app', 'Уверены?'),
                        'method' => 'post',
                    ]
                ]);
        }
Сделал проверку наличие записи через searchModel+dataProvider+gridview.
Теперь в кнопку хочу засунуть список переменных в пост (не гет), которые будут передаваться вместе с нажатием "Подтверждаю..."
Хочу что-то типа такого: в массив дата добавить например, так:

Код: Выделить всё


'data' => [
                        'confirm' => Yii::t('app', 'Уверены?'),
                        'method' => 'post',
                        'myPostVariableName' => 'myPostVariableValue',
]
как можно сделать что-то типа такого?
Prooksius
Сообщения: 100
Зарегистрирован: 2019.01.17, 23:24

Re: переменные пост в кнопке

Сообщение Prooksius »

Сделайте простую форму с method="post" и с кнопкой submit и в форму закиньте требуемые для передачи параметры в hiddenInput, например
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: переменные пост в кнопке

Сообщение unknownby »

В JS есть обработчик закрытия модального окна. Там нужно прописать параметры в data для твоей кнопки и через POST придут в контроллер параметры.

P.S.
Можно таким образом передавать, однако в твоём случае можно и упростить.
Обработчик закрытия модального окна, а дальше внутри происходит submit формы

Код: Выделить всё

$js = "
$(document).ready(function(){

    $('#btn-multi-exp').on('click', function(e){
        var my_id = '".1111."';
        var my_parent_id = '".123."';
        if(ids != '') {
            $('#btn-multi-exp').attr('data-params', JSON.stringify({my_id, my_parent_id}));
        } else {
            $('#btn-multi-exp').removeAttr('data-params');
            return false;
        }
    });

    $(document).on('hidden.bs.modal', '.modal', function() {
        document.getElementsByTagName('form')[0].submit();
    });

});"
$this->registerJs($js);
Сама кнопка

Код: Выделить всё

echo Html::a('<i class="glyphicon glyphicon-export"></i> <span class="hidden-md hidden-sm hidden-xs">' . \Yii::t('main', 'button.export') . '</span>',
        ['multi-export'],
        [
            'id' => 'btn-multi-exp',
            'class' => 'btn btn-success-dark',
            'data' => [
                'confirm' => \Yii::t('main', 'Are you sure you want to export selected rows?'),
                'method' => 'post',
            ],
            'target' => '_blank',
        ]
    );
Если упростить, то из js нужна нижняя часть, а в кнопку передавай вот так.

Код: Выделить всё

echo Html::a('<i class="glyphicon glyphicon-export"></i> <span class="hidden-md hidden-sm hidden-xs">' . \Yii::t('main', 'button.export') . '</span>',
        ['multi-export'],
        [
            'id' => 'btn-multi-exp',
            'class' => 'btn btn-success-dark',
            'data' => [
                'confirm' => \Yii::t('main', 'Are you sure you want to export selected rows?'),
                'method' => 'post',
                'params' => [
                	'my_id' => $my_id,
                	'my_parent_id' => $my_parent_id,
                ],
            ],
            'target' => '_blank',
        ]
    );
Для альтернативы дал два способа :)
Ответить