Array и Gridview

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
DoomGrey
Сообщения: 5
Зарегистрирован: 2015.05.09, 02:33

Array и Gridview

Сообщение DoomGrey »

Здравствуйте, хочу отобразить список файлов из папки в GridView и столкнулся с проблемой, получаю данные о файлах в массивe, и при отображении в GridView отображается во всех полях null, хотя количество строк определяет правильно (8).

Получаю массив с путями к файлами:

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

    public function actionFiles()
    {
        $folder = 'C:\Bitnami\apache2\htdocs\EOD\frontend\web\dokumentacja';
        $files=FileHelper::findFiles($folder);   
        
        $dataProvider = new ArrayDataProvider([
            'allModels' => $files,
            'pagination' => [
            'pageSize' => 30,
            ],
            ]);

        return $this->render('files', [          
            'dataProvider' => $dataProvider,
        ]);
    }
Дамп массива:

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

array (size=8)
  0 => string 'C:\Bitnami\apache2\htdocs\EOD\frontend\web\dokumentacja\11\11_2.pdf' (length=67)
  1 => string 'C:\Bitnami\apache2\htdocs\EOD\frontend\web\dokumentacja\123__456.pdf' (length=68)
  2 => string 'C:\Bitnami\apache2\htdocs\EOD\frontend\web\dokumentacja\1__3.pdf' (length=64)
  3 => string 'C:\Bitnami\apache2\htdocs\EOD\frontend\web\dokumentacja\322_4.pdf' (length=65)
  4 => string 'C:\Bitnami\apache2\htdocs\EOD\frontend\web\dokumentacja\327642\327642_1.pdf' (length=75)
  5 => string 'C:\Bitnami\apache2\htdocs\EOD\frontend\web\dokumentacja\333\333_1.pdf' (length=69)
  6 => string 'C:\Bitnami\apache2\htdocs\EOD\frontend\web\dokumentacja\7\7_8.pdf' (length=65)
  7 => string 'C:\Bitnami\apache2\htdocs\EOD\frontend\web\dokumentacja\Test1_1.pdf' (length=67)
  
Сам GridView:

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

 yii\grid\GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        [
            'attribute' => 'value ',
        ],
    ]
]);
Насколько я понимаю проблема с массивом и точнее названием поля в котором отобразить данные, пробовал разные значения index\value\id etc, и ничего.

В документации по findFiles не нашел информации о названии атрибутов. Может кто-то что-то подскажет ?
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Array и Gridview

Сообщение Alexum »

Чтобы можно было обращаться как к атрибуту массив должен быть такого вида:

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

[
    1 => [
        'file_name' => 'C:\Bitnami\apache2\htdocs\EOD\frontend\web\dokumentacja\11\11_2.pdf',
    ],
    2 => [
        'file_name' => 'C:\Bitnami\apache2\htdocs\EOD\frontend\web\dokumentacja\123__456.pdf',
    ]
...
]

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

yii\grid\GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        [
            'attribute' => 'file_name',
        ],
    ]
]);
Аватара пользователя
gud3
Сообщения: 23
Зарегистрирован: 2017.03.15, 15:05
Контактная информация:

Re: Array и Gridview

Сообщение gud3 »

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

yii\grid\GridView::widget([
	'dataProvider' => $dataProvider,
	'columns' => [
		['class' => 'yii\grid\SerialColumn'],
		[
			'attribute' => 'FileName',
			'value' => function ($data) {
				return $data;
			},
		],
	]
]);
Последний раз редактировалось gud3 2017.03.22, 01:17, всего редактировалось 1 раз.
DoomGrey
Сообщения: 5
Зарегистрирован: 2015.05.09, 02:33

Re: Array и Gridview

Сообщение DoomGrey »

Alexum

А как его можно переделать в подходящий вид ? Извиняюсь, за глупые вопросы, но никак не могу нагуглить.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Array и Gridview

Сообщение zelenin »

DoomGrey писал(а): 2017.03.22, 01:16 Alexum

А как его можно переделать в подходящий вид ? Извиняюсь, за глупые вопросы, но никак не могу нагуглить.
foreach не знаем, но лезем во фреймворк? вы перепрыгнули пару степенек
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Array и Gridview

Сообщение someweb »

DoomGrey писал(а): 2017.03.22, 01:16 Alexum

А как его можно переделать в подходящий вид ? Извиняюсь, за глупые вопросы, но никак не могу нагуглить.

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

$result = [];
foreach ($files as $file) {
    $result[] = ['file_name' => $file];
}
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
Ответить