Как передать elementId в генератор штрих-кода в Gridview Yii2?

Я прошел через это:

Но не получается. Мой вид сетки:

<?= GridView::widget([
        'dataProvider' => new yii\data\ActiveDataProvider(['query' => $model->getLibBookMasters()]),
        'summary' => '',        
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

            'lbm_book_no',
            [
             'attribute' => 'lbm_barcode_no', 
             //'type' => 'raw', 
             'value'=> function($model){
            return \barcode\barcode\BarcodeGenerator::widget(
                [
                'elementId' => 'lbm_barcode_no',
                'value'=> 'lbm_barcode_no', 
                'type'=>'ean13',

                ]);},
            ], 
        ],
    ]); ?>

Мне нужно пройти elementId, которые делают трюк, но не нашли его. Я только что установил генератор штрих-кода и не знаю, как с ним работать.


person Insane Skull    schedule 06.08.2015    source источник


Ответы (1)


Вам нужно передать разные elementIds. Поскольку ваш код в настоящее время вы передаете литерал 'lbm_barcode_no' вместо значения атрибута lbm_barcode_no ваших моделей. Кроме того, вы должны создать div, где должен отображаться штрих-код, и установить format столбца на raw или html:

'columns' => [      
    ['class' => 'yii\grid\SerialColumn'],

    'lbm_book_no',
    [
        'attribute' => 'lbm_barcode_no', 
        'format' => 'raw', 
        'value'=> function($model){
            return yii\helpers\Html::tag('div', '', ['id' => 'barcode-'.$model->lbm_barcode_no]).
            \barcode\barcode\BarcodeGenerator::widget([
                'elementId' => 'barcode-'.$model->lbm_barcode_no,
                'value'=> $model->lbm_barcode_no, 
                'type'=>'ean13',
            ]);
        },
    ], 
],

Я добавил к тегам префикс barcode-, чтобы избежать коллизий (мало ли что).

person topher    schedule 06.08.2015
comment
преобразование массива в строку при объединении - person Insane Skull; 19.08.2015
comment
Мое предположение заключалось в том, что lbm_barcode_no — это строка. Является ли lbm_barcode_no массивом? - person topher; 19.08.2015
comment
нет... но это показывает ошибку... или я не знаю точного местоположения. - person Insane Skull; 19.08.2015
comment
Возникла проблема с функцией Html::tag, второй параметр которой должен быть строкой, а не массивом. - person topher; 19.08.2015
comment
Итак, что мне теперь делать? - person Insane Skull; 19.08.2015
comment
выход <div id="barcode-dsdfd23"></div>. показывает весь div - person Insane Skull; 19.08.2015
comment
Проверьте тип штрих-кода. EAN13 состоит только из цифр. - person topher; 19.08.2015
comment
иногда он состоял из цифр и букв. - person Insane Skull; 19.08.2015
comment
он также не поддерживает type ="raw" получение Setting unknown property: yii\grid\DataColumn::type. - person Insane Skull; 19.08.2015
comment
Давайте продолжим обсуждение в чате. - person topher; 19.08.2015