Как вывести содержимое папки в json формате?

93
17 марта 2021, 20:00

-- У меня есть папка, в ней есть картинки. Вытащить с помощью php получается, но получить json-формат почему-то не получается.

Делаю это на Yii2.

Вот контроллер:

public function actionImage($id) 
{
    $dir = 'gallery/'.$id.'/';
    $files = Scripts::getArrayImages($dir);
    \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; 
    //\Yii::$app->response->data = $files;
    return $files;
}

Вот рабочая функция которая получает данные папки и обрабатывает их:

public function getArrayImages($params)
{
    if(Scripts::getCountImage($params) == '') {
    }
    else {
        $filesa = array_diff( scandir( $params), array('..', '.'));
        $files = [];
        foreach($filesa AS $i => $filename) {
            printf(
                Scripts::site().'/'.$params.'%s",',
                urlencode( $filename), $filename
            );
        }             
    } return $files;
}

В представлении ничего нет, вьюшка пустая.

Стандартный лэйаут, как в репозитории github Yii2 Advanced.

Данные выводятся, но с ошибкой:

An Error occurred while handling another error: yii\web\HeadersAlreadySentException: Headers already sent in [...path]

Ругается на содержимое функции:

     ...
 Scripts::site().'/'.$params.'%s",',
 ...

То есть ошибка вылезает на то что работает и выводится. Получить данные нужно в json формате. Не в json выводит данные без ошибок.

Что не так? Кто знает решение? Заранее благодарю за отзывчивость и помощь.

READ ALSO
на хостинге не работает авторизация, а на локальном сервере без проблемю

на хостинге не работает авторизация, а на локальном сервере без проблемю

подскажите, почему проверка пароля на локальном сервере (ноутбук (Тип сервера: MariaDB; Версия сервера 103

103
SSR в окружении PHP и Vue.js

SSR в окружении PHP и Vue.js

Стоит жирная задача реализовать SSR (Server-Side Rendering) в проекте, но постоянно вылазят разные трудности

109
Отправка GET POST запроса android

Отправка GET POST запроса android

Нужна помощьНе могу за коннектится сервером

113