2 заметки с тегом

Йии

Отношения в «Йии»

Разрабатывая в «Йии 2» интерфейсы управления данными, которые имеют различные связи и отношения, сразу же сталкиваешься с проблемой управления этими самыми связями и отношениями.

Например
Представим, что есть три таблицы: новости, категории, и связи «многие ко многим» новостей с категориями. В РЕСТ-сервис прилетает запрос от клиента на создание новости. Среди прочего, в запросе переданы идентификаторы категорий, к которым относится новость. Так вот, «Йии», с его экшеном создания, не сможет сгенерировать запись для таблицы связей новостей с категориями. Он просто не умеет так, для этого нужно писать дополнительную логику обработки идентификаторов категорий в сервисном слое или модели. Или… Использовать расширение, которое само сделает всю грязную работу.

Мы в «Нотамедии» сделали и протестировали на десятке проектов расширение с незамысловатым названием yii2-relation, которое содержит поведение, управляющее записями в связанных моделях. Просто подключите и укажите, какими отношениями нужно управлять. И не нужно дописывать модель. И не нужно изменять экшен.


composer require notamedia/yii2-relation

Репозиторий

2017   веб-разработка   Йии

Логирование из «Йии» в «Сентри»

Недавно исполнился год одному маленькому, но полезному расширению с «Сентри-логером» для фреймворка «Йии-2». Бета-версию я опубликовал 29 декабря 2015 года. В то время поиск существующих решений не принёс больших успехов: имеющиеся в открытом доступе логеры либо плохо сопровождались, либо имели недостаточную нам функциональность.

Наш логер позволяет прикладывать к сообщениям теги и контекстную информацию, умеет модифицировать экстра-поля через колбек-функцию в конфигурации компонента, покрыт юнит-тестами и совместим со всеми актуальными версиями ПХП. Ничего особенного, просто аккуратное и гибкое расширение для интеграции «Йии» с «Сентри».


composer require notamedia/yii2-sentry

Репозиторий


Полезные советы

Подключая наш (или любой другой) логер, помните, что любая система может сломаться и вы должны быть готовы к такому происшествию, как недоступность «Сентри». Всегда подключайте в приложении резервный логер:

return [
    'components' => [
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'notamedia\sentry\SentryTarget',
                    'dsn' => 'http://sentry/13',
                    'levels' => ['error', 'warning'],
                ],
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
    ],
];

Из-за отложенного экспорта в логерах «Йии», сообщения от долгоиграющих консольных процессов (крон-задачи и воркеры) могут крайне долго не записываться в логи. Поэтому, для консольных приложений устанавливайте свойства exportInterval и flushInterval в значение 1:

return [
    'components' => [
        'log' => [
            'flushInterval' => 1,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'exportInterval' => 1
                ],
            ],
        ],
    ],
];

В противном случае, в логах не появятся сообщения до тех пор, пока логер «Йии» не наберёт достаточное количество, что бы записать их все махом.

Читайте так же: «Протоколирование в программировании».

2017   веб-разработка   Йии