ArrayDataProvider gridview

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
cruim
Сообщения: 106
Зарегистрирован: 2016.12.23, 10:16

ArrayDataProvider gridview

Сообщение cruim »

Сделал такую конструкцию

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

 public function actionIndex()
    {
        $data = order::getSome();
        $dataProvider = new ArrayDataProvider([
            'allModels' => $data,
            'sort' => [
                'attributes' => ['paid']
            ]


        ]);
        return $this->render('index',['dataProvider' =>$dataProvider]);
    }
Если в gridview убрать совсем

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

'columns' => [
,то корректно выводит все колонки с данными. Если указывать в colums=> имена колонок, то выводит во всех ячейках нули. Как вывести определенные колонки?
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: ArrayDataProvider gridview

Сообщение Alexum »

Подозрительно :? . Покажите как выводите с определёнными колонками, покажите структуру массива $data.

Массив должен иметь примерно такую структуру:

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

[
    1 => [
        'attribute1_name' => value,
        'attribute2_name' => value,
        ....
        'attributeN_name' => value,
    ],
    2 => [
        'attribute1_name' => value,
        'attribute2_name' => value,
        ....
        'attributeN_name' => value,
    ]
...
]
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ArrayDataProvider gridview

Сообщение zelenin »

cruim писал(а): 2017.01.19, 12:42Если в gridview убрать совсем

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

'columns' => [
,то корректно выводит все колонки с данными. Если указывать в colums=> имена колонок, то выводит во всех ячейках нули. Как вывести определенные колонки?
очевидно ведь, что у вас ошибка в коде? но почему вы код не привели?
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: ArrayDataProvider gridview

Сообщение Alexum »

Извините, не удержался ... :D
Изображение
cruim
Сообщения: 106
Зарегистрирован: 2016.12.23, 10:16

Re: ArrayDataProvider gridview

Сообщение cruim »

Alexum писал(а): 2017.01.19, 13:30 Подозрительно :? . Покажите как выводите с определёнными колонками, покажите структуру массива $data.

Массив должен иметь примерно такую структуру:

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


    1 => [
        'attribute1_name' => value,
        'attribute2_name' => value,
        ....
        'attributeN_name' => value,
    ],
    2 => [
        'attribute1_name' => value,
        'attribute2_name' => value,
        ....
        'attributeN_name' => value,
    ]
...
]
Так выводится все колонки и данные

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

<?= GridView::widget([
      //  'options' => ['text-align' => 'center'],
        'dataProvider' => $dataProvider,
        'formatter' => ['class' => 'yii\i18n\Formatter', 'nullDisplay' => ''],
        'filterModel' => $searchModel,
        'rowOptions' => function ($model)
        {
        },
    ]); ?>
Так пытаюсь вывести одну из колонок

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

<?= GridView::widget([
      //  'options' => ['text-align' => 'center'],
        'dataProvider' => $dataProvider,
        'formatter' => ['class' => 'yii\i18n\Formatter', 'nullDisplay' => ''],
        'filterModel' => $searchModel,
        'rowOptions' => function ($model)
        {
        },
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
    ['attribute' => 'paid',
        'value'=>function($data){return $data['paid'];} ],

        ],
    ]); ?>
</div>
Выводит одни нули
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: ArrayDataProvider gridview

Сообщение Alexum »

А зачем так сложно?

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

'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            [
            	'attribute' => 'paid',
       		'label'=>'Я не ищу простое решение'
            ],
            ...
]
С массивом $data всё в порядке?

И что вы используете в качестве фильтра?

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

...
'filterModel' => $searchModel,
...
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ArrayDataProvider gridview

Сообщение zelenin »

'value'=>function($data){return $data['paid'];} ],

так проверьте, что у вас в $data приходит
cruim
Сообщения: 106
Зарегистрирован: 2016.12.23, 10:16

Re: ArrayDataProvider gridview

Сообщение cruim »

Alexum писал(а): 2017.01.19, 15:16 А зачем так сложно?

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

'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            [
            	'attribute' => 'paid',
       		'label'=>'Я не ищу простое решение'
            ],
            ...
]
С массивом $data всё в порядке?

И что вы используете в качестве фильтра?

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

...
'filterModel' => $searchModel,
...
С массивом все в порядке думаю, тк кол-во строк соответствует ожидаемому. Повторюсь, все корректно выводит если из грида вообще убрать 'columns'=>. Если просто распечатать

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

print_r($data);
        exit();
тоже все нормально
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: ArrayDataProvider gridview

Сообщение Loveorigami »

Ну так читайте документацию.
http://www.yiiframework.com/doc-2.0/yii ... vider.html
Там columns разве есть?
Там keys, пробовали?
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: ArrayDataProvider gridview

Сообщение Alexum »

Loveorigami писал(а): 2017.01.19, 18:53 Ну так читайте документацию.
http://www.yiiframework.com/doc-2.0/yii ... vider.html
Там columns разве есть?
Там keys, пробовали?
columns в GridView, в провайдере такого нет.
cruim писал(а): 2017.01.19, 18:27 убрать 'columns'=>. Если просто распечатать

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

print_r($data);
        exit();
тоже все нормально
Кусок распечатанного массива покажите, только желательно через VarDumper::dump($data,10,true);

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

'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            [
            	'attribute' => 'paid',
       		'label'=>'Я не ищу простое решение'
            ],
            ...
]
и вот так что выводит?
cruim
Сообщения: 106
Зарегистрирован: 2016.12.23, 10:16

Re: ArrayDataProvider gridview

Сообщение cruim »

Alexum писал(а): 2017.01.19, 19:03
Loveorigami писал(а): 2017.01.19, 18:53 Ну так читайте документацию.
http://www.yiiframework.com/doc-2.0/yii ... vider.html
Там columns разве есть?
Там keys, пробовали?
columns в GridView, в провайдере такого нет.
cruim писал(а): 2017.01.19, 18:27 убрать 'columns'=>. Если просто распечатать

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

print_r($data);
        exit();
тоже все нормально
Кусок распечатанного массива покажите, только желательно через VarDumper::dump($data,10,true);

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

'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            [
            	'attribute' => 'paid',
       		'label'=>'Я не ищу простое решение'
            ],
            ...
]
и вот так что выводит?
Кусок распечатанного массива(почему-то не захотело подключаться пространство имен use app\components\VarDumper;) http://joxi.ru/4Ak9wj8Fajzbmq Второй вывод http://joxi.ru/KAgX9jPUP58Grl
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ArrayDataProvider gridview

Сообщение zelenin »

в которых все paid чему равны? нулю? а ваша проблема в чем? в том, что нули выводит?
cruim
Сообщения: 106
Зарегистрирован: 2016.12.23, 10:16

Re: ArrayDataProvider gridview

Сообщение cruim »

zelenin писал(а): 2017.01.19, 21:42 в которых все paid чему равны? нулю? а ваша проблема в чем? в том, что нули выводит?
Ребят, я дико извиняюсь, делал этот же запрос на другой выборке в sql. И видимо оттуда засело в голове, что paid, почти во всех колонках отличен от нуля. Стыдно-то как :oops:
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ArrayDataProvider gridview

Сообщение zelenin »

да нет, не извиняю.
в 15:20 написал: проверь $data viewtopic.php?p=208669#p208636
следующим же комментом ты написал, что все нормально.
на что я ответил, что не может быть нормально, раз есть проблема.
То есть ты пришел с проблемой, тебе указали на путь к ее разрешению, а ты наврал, что у тебя все ок в том месте, в которое тебе указали, представляя ситуацию как необъяснимую тайну бытия.
Ответить