Перейдем сразу к делу. Про саму October я писал в этой статье.
Как просматривать структуры данных
Все очень просто. Представим что мы обращаемся к какому-либо компоненту, и нам надо посмотреть что он возвращает.
Для того что бы это сделать есть несколько простых вариантов.
1. Использование dump() в twig шаблоне.
Если нажать на элемент в списке, можно посмотреть его содержание. Это очень удобно, особенно для моделей
{% set data = Component.get() %}
{{ dump(data) }}
Это самый простой и удобный вариант.
Пример работы dump()
2. Использование dd() в php файлах
dd() - это аналог var_dump(); die;
dd() имеет подсветку синтаксиса, показывает любые типы данных. Показывает функции, параметры и связи в просматриваемых моделях
$model = Model::get();
dd($model);
Данный вариант используется только для данных полученных синхронно (не Ajax). Если php файл участвует в работе при рендере страницы, то он сработает. Выглядит он примерно так же как dump().
Пример использования: Представим, что у вас есть компонент. В компоненте вы получаете данные из модели. Но у вас скрипт работает неправильно. Вы хотите посмотреть структуру данных в функции самой модели.
Новичок обычно получает данные в компонент, возвращает их и печатает в dump(). Кто уже освоился в октябре пишет в модель dd($data) и получит примерно тот же результат.
Пример использования dd()
3. Логирование
Данный способ особенно удобен. Данные отправляются в системный лог. Лог можно просматривать в админе (настройки - журнал событий). Журнал событий имеет историю, то есть данные сохраняются.
Для записи данных в журнал надо написать следующее:
use Illuminate\Support\Facades\Log; // Используем класс Log
$data = Model::data();
Log::error($data);
Просмотр журнала событий October CMS
Как видите очень удобно и просто.
Как смотреть данные если используется ajax обработчик.
Для новичка пожалуй это самый сложный вопрос. Я использую логирование, так как это самый удобный способ. Но есть и еще пара методов.
1. Вернуть данные в консоль js
Что бы это провернуть надо подготовить данные перед их возвращением. Данный метод неудобный и вряд ли его будет кто то использовать, но рассказать о нем надо.
Создаем обработчик, готовим данные
function onGetData()
{
$data = Model::get()->toJson(); // Преобразуем тип данных в json иначе в консоли мы увидим [Object Object]
return $data; // Возвращаем
}
Обратите внимание, что вернуть я собираюсь просто данные. Если отдать фрагмент (partial) то ничего не выйдет.
Обращаемся к обработчику и печать данных в консоль
$.request('onGetData', {
complete: function(data) {
console.log(data);
}
});
Не рекомендую этот способ. Читать данные неудобно, только для извращенцев, которые могут парсить Json в своем головном мозге.
2. Просмотр данных через вкладку network инструментов разработчика
Неплохой метод, иногда использую его совместно с Log, когда лень. Использовать очень просто.
Возвращаем данные в php по старинке:
$data = Model::get(); // Получаем данные модели
var_dump($data); die; // Возвращаем и убиваем скрипт. Можно использовать print_r()
Теперь открываем вкладку инструментов разработчика и переходим в network. Перезагружаем страницу или делаем Ajax запрос. Смотрим данные в response разделе.
Если у вас стоит какой то редирект. Например, как в компоненте Order Shopaholic. То активируйте галочку preserve log. Теперь данные будут сохраняться всегда.
Просмотр содержимого массива во вкладке network
Данный способ подойдет для любой ситуации. Даже при использовании ajax. Надеюсь я кому-то смог облегчить жизнь)