Как передать доп параметры в kartik\widgets\FileInput ?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
rotting
Сообщения: 58
Зарегистрирован: 2016.07.28, 15:50

Как передать доп параметры в kartik\widgets\FileInput ?

Сообщение rotting » 2019.05.22, 19:54

Хочу передать доп параметры при загрузке файла, пытаюсь написать через uploadExtraData так:

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

echo FileInput::widget([
        'name'=>'kartiks_file',
        'options'=>['multiple' => false,],
        'pluginEvents' => [
            "filebatchuploadcomplete" => "function() { window.location = '/index.php?r=cart/index'}",
            "filelock" => "function(event, filestack, extraData) {
                article = document.getElementById('col-article').value;
                qty = document.getElementById('col-qty').value;
                console.log(''.article+' - '+qty);
                var obj = {};
                    var id = ''+article+'', val = qty;
                    obj[id] = val;
                extraData = obj;
            }",
        ],
        'pluginOptions' => [
            'uploadExtraData' => "function (previewId, index) {
            article = document.getElementById('col-article').value;
                qty = document.getElementById('col-qty').value;
                console.log(''.article+' - '+qty);
                var obj = {};
                    var id = ''+article+'', val = qty;
                    obj[id] = val;
                extraData = obj;
                return extraData;
          }",

            'encodeUrl' => false,
            'uploadUrl' => Url::toRoute(['cart/file_upload']),
            'maxFileCount' => 1,
            'showPreview' => false,
        ]
        ]);
Но получаю ошибку в консоли, как правильно сделать?

rendzhifaer
Сообщения: 1
Зарегистрирован: 2019.08.07, 09:34

Re: Как передать доп параметры в kartik\widgets\FileInput ?

Сообщение rendzhifaer » 2019.08.07, 09:40

Нужно экранировать js примерно так!

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

yii\web\JsExpression;

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

 'pluginOptions' => [
            'uploadExtraData' => "new \yii\web\JsExpression('function(previewId, index) {
            article = document.getElementById('col-article').value;
                qty = document.getElementById('col-qty').value;
                console.log(''.article+' - '+qty);
                var obj = {};
                    var id = ''+article+'', val = qty;
                    obj[id] = val;
                extraData = obj;
                return extraData;
          }",

Ответить