Бесплатный плагин Dev — специально для разработчиков

Я уже упоминал как-то об этом плагине, но вскользь. Сейчас хочу рассказать о нем чуть подробнее. Делал плагин для себя, но, думаю, многим разработчикам, имеющим дело с Альто, он может быть полезен.

Что умеет этот плагин:
1) Особо отмечать в генерируемом HTML-коде используемые файлы шаблонов, чтобы понимать, откуда что берется при выводе страницы
2) Создавать описания классов в формате PhpDocs для автокомплита в IDE
3) Показывать текущую конфигурацию сайта (т.е. итоговый конфиг)
4) Перехватывать и отображать на экране ошибки с кучей дополнительной информации
Маркировка файлов шаблонов в HTML-коде
Известно, что итоговый HTML-код в Альто собирается из большого числа файлов, которые, к тому же, могут еще зависеть от установленных плагинов. И иногда бывает сложно понять, что откуда берется. Для того, чтоб облегчить поиски источников, в конфиге плагина Dev надо задать опцию:
$config['smarty']['options']['mark_templates'] = true;
И теперь при генерации HTML-кода в в него будут вставляться специальные комментарии, указывающие на начало и конец используемого файла шаблона. Код, в итоге, выглядит примерно так:
<!-- TEMPLATE BEGIN [lvl:0, tpl:@common/templates/skin/experience/tpls/commons/common.header_nav.tpl] -->
<nav class="navbar navbar-default navbar-content" role="navigation">
    <div class="container">
        <div id="navbar-content">
            <ul class="main nav navbar-nav">
                
<!-- TEMPLATE BEGIN [lvl:0, tpl:@common/plugins/dev/templates/skin/default/tpls/menus/menu.dev.tpl] -->
<ul class="main nav navbar-nav">
    <li>
        <a class="" href="http://altocms.dev.loc/dev/config/">Config</a>
    </li>
</ul>
<!-- TEMPLATE END [lvl:0, tpl:@common/plugins/dev/templates/skin/default/tpls/menus/menu.dev.tpl] -->

Описания классов и автокомплит
Еще одна неприятная проблема — это отсутствие автокомплита классов в IDE. Чтобы ее решить, нужно настроить секцию $config['class_aliases'] конфигурации плагина.

Плюс (это важно!) нужно создать файл engine/config.defines.php с таким содержимым:
<?php
define('DEBUG', 1);
// EOF
И тогда (если настройки плагина заданы по умолчанию, у вас в папке /_dev/ будут созданы два файла: Aliases.php и F.php. Все, наслаждаемся автокомплитом!

Видим, какие модули у нас есть, причем (!!!) с учетом наследования в плагинах:


И, конечно, методы и свойства модулей тоже определяются:


Просмотр конфигурации
Конфигурация вашего сайта может формироваться с помощью разных источников — базовая конфигурация по умолчанию, конфиг-файлы плагинов, шаблонов, установка настроек через админку и т.д. И, порой, бывают ситуации, что какой-то параметр конфигурации переопределяется много раз, и не очень понятно, какое же, в итоге, у него значение. Теперь узнать это легко и просто — идем по адресу site.com/dev/config/ и наблюдаем там такую картину:


Обработчик ошибок
Наконец, плагин добавляет свой обработчик ошибок, используя библиотеку Whoops (разумеется, его можно отключить). И если случается при отладке ошибка, то она отображается примерно так:

Очень удобно — и стек вызовов показывается, и серверные переменные, и даже кусок исходного кода, где приключилась эта ошибка

Плагин на гитхабе: https://github.com/altocms/alto-plugin-dev

Похожие статьи


8 комментариев

+1
Очень полезная штука буду смотреть что под капотом у нее.
0
Отдельное спасибо за автокомпилит, только вчера Вадиму писал что его не хватает очень сильно, а тут бам и то что ой как нужно и появилось. Огромное спасибо.
0
Прошу прощение накосячил во всех местах. :) напутал всех авторов, прошу прощение.
+1
Очень полезный плагин. Спасибо!
0
Если вклчюить Whoops то будет ошибка инициализации класса Whoops.

Fatal error: Class 'Whoops\Run' not found in C:\OpenServer\domains\alto11\common\plugins\dev\PluginDev.class.php on line 39

E_ERROR [1] Class 'Whoops\Run' not found
See details in error.log

Ошибка в журнале E_ERROR [1] Class 'Whoops\Run' not found (C:\OpenServer\domains\alto11\common\plugins\dev\PluginDev.class.php on line 39)
0
Скорее всего движок нужно обновить, взять с гитхаба. Со времени релиза 1.1.0-b были коммиты, которые улучшают поддержку PSR-4
0
Когда включаешь плагин он работает для всех пользователей?
Когда просят что либо починить приходится приписывать функцию для того чтоб отладка срабатывала только для меня.
0
Я как-то не планировал, что плагин будет использоваться на продакшене, писался исключительно для разработки. На живом сайте максимум — это проверка корректности конфига сайта. Поэтому в экшене проверка стоит на админа, а отладка без проверки юзера работает
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.