Блог хеллоуворлдщика

Обертка Date Range Picker (Bootstrap) плагина для Yii2

Обертка Date Range Picker (Bootstrap) плагина для Yii2

Пошатавшись по GitHub, и поняв, что выбор очень скудный, понял одну вещь: проблема утопающего - дело рук самого утопающего. Поэтому, я взялся за написания обертки над сие прекрасным плагином.

Ссылка на расширение: https://github.com/bupy7/yii2-date-range-picker

Читать далее

Поведение для смены и установки пароля пользователя для Yii2

Продолжаю делать всякие различные расширения упрощающие жизнь в разработке. Данный behavior у меня был достаточно долгое время в проектах и таскался файлом, но, тут я решил, что такое надо прекращать и делать по человечески, чтобы можно было поддерживать пакет отдельно.

Смена пароля довольно интересная вещь, особенно, если это выполняется не в одном месте. Часто вижу в проектах, что в моделях начинают плодить какой-то ужас. Это неправильно, товарищи. Вообще, не правильно даже наличие какого-то кода в модели в методах before<EventName>/ after<EventName>. Правильно стряпать behavior'ы и вешать куда нужно и когда нужно. Но, хрен с ним...

В общем, расширение простое, как сибирский валенок. Читаем README и применяем. Тащемта, удобно жи. =)

Ссылка на расширение: https://github.com/bupy7/yii2-password-behavior

Читать далее

RBAC или роли доступа в Yii2

Много разных вариантов реализации ролей доступа мной было испробовано, пока я не нашел идеально подходящий для меня.

Первое, что мне не нравится в RBAC реализованный в Yii2, это возможность использовать несколько ролей. На самом деле, при правильно реализованной иерархической структуре достаточно одной роли.

Второе, что мне не нравится, это хранение назначений отдельно, т.е. связывание роли с пользователем. И это в коробке вообще никак не отключается. Если нужно действительно это отключить, чтобы случайно другой программист не заюзал - нужно переопределять менаджер авторизации и вешать всякие throw и прочее. Роль, имхо, должна указываться в таблице с пользователем, потому что: если нужно делать дамп, то если назначения хранятся в ФС - придется делать дамп и связей; а если назначения хранятся в БД (а хранить их в БД нет никакого смысла вообще), то такое тяжело поддерживать, если вдруг структура ролей будет изменена; и потом, если хранить назначения с ролями отдельно, то у людей получается жуткий говнокод, если нужно иметь возможность "видеть" роль пользователя и менять её динамически. Поэтому, делать нужно правильно изначально: все роли, правила, иерархию наследования храним в ФС, а связываем все это дело, через поле role в таблице с пользователями.

Читать далее

Хранение и работа с конфигурацией приложения используя базу данных в Yii2

Я был очень удивлен, когда не обнаружил на просторах GitHub и Bitbucket чего-то легкого, простого, и в того же время, мощного расширения для работы с конфигурацией приложения использующее в качестве хранилища параметров базу данных. Ведь не всегда хорошо хранить, например, название сайта в Yii:$app->params[]. Этого, конечно, чаще всего достаточно, но иногда вот такие моменты, как с названием сайта/проекта ставят разработку на "паузу" и"заставляют" продумывать решение. Я и раньше делал нечто подобное для всех своих проектов, но в этот раз я решил, что стоит этому уделить максимум внимания и перестать таскать файлы из проекта в проекта, т.е. моей задачей стало "Сделать модуль конфигурации приложения для Yii2".

Читать далее

Новая версия yii2-widget-cropbox

Готов сообщить радостную новость (по крайней мере для меня), что вышла новая версия кроппера 4.0.0! Лично я доволен как слон.

Изменения были очень весомые и, так как поменялась мажорная циферка в версии, тот как мы все знаем это значит, что расширение уже не совместимо с предыдущим. Поэтому, если хотите использовать в старом проекте, где была версия 3.*, то придется переписать чуточку кода.

Самое главное, что изменилось в кроппере, это то, что мной был написан jQuery плагин, что позволяет использовать кроппер не только в Yii Framework, но и в любых других проектах. В прошлых версиях я использовал обертку над одним готовым плагином для jQuery плюс некоторые дополнения в этот плагин. Но время не стоит, мы делаем код лучше и совершенствуемся. Например, после релиза плагина было замечено, что работает он в разы быстрей предыдущего.

Читать далее

XML конструктор

Понадобилось создать запрос в формате application/xml/text/xml? Или создать sitemap.xml? И ты в поисках обертки над XMLWriter? Тогда, ты её уже нашел!

Данная обертка позволяет создать XML файл из массива без особой возни и скромной затратой времени.

Latest Stable Version Total Downloads Latest Unstable Version License Build Status Coverage Status

Ссылка на GitHub: https://github.com/bupy7/xml-constructor

Читать далее

Конвертирование даты и времени в Yii2

Latest Stable Version Total Downloads Latest Unstable Version License Build Status Coverage Status

Ты решил заюзать DateTimePicker, но теперь, тебе приходится конвертировать дату и время перед сохранением? Не беда! Можно использовать сие расширение, позволяющее упростить задачу.

Данное расширение содержит внутри поведение, которое можно повешать на AR, при желании, и оно все сделает за вас. Самое главное - правильно настроить преобразователь.

Так же, его необязательно использовать для DateTimePicker и им подобных. Оно подойдет для чего-угодно, если необходимо преобразовать дату и время.

Ссылка на GitHub: https://github.com/bupy7/yii2-datetime-converter

Читать далее

Расширенный GridView для Yii2

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

И чем же это лучше того, что уже есть, спросите вы. А все просто: я не "заставляю" использовать все. Вы можете использовать только то, что нужно вам. Плюсом, это никак не завязано на настройках приложения или явно "навязывание" какого-то подхода.

Ссылка на GitHub: https://github.com/bupy7/yii2-grid

Читать далее

Yii2, REST, ContentNegotiator и ErrorHandler

Проблема "невозможности" указать формат ответа у ошибок, которые, к примеру были вызваны вне контроллера и не могут быть "пропущены" через yii\filters\ContentNegotiator имеет место быть, т.к. в сети по этому поводу 0, а в тех болванках, что предназначены для демонстрации возможностей Yii2 в плане REST из коробки, все решение данного вопроса сводилось к тому, чтобы просто явно указать формат ответа в yii\web\Response, что вообще, я считаю, костыль, т.к. весь смысл отдачи ответа в разных форматах сразу продает.

Читать далее

Получение информации о местоположении по IP адресу для Yii2

ВНИМАНИЕ

Автор не рекомендует использовать данное расширение, где необходима скорость обработки, потому что иногда от Telize ответа не дождаться. Поэтому, рекомендую использовать MaxMind GeoIP2, который так же использует Telize.

Очень много сервисов я перековырял перед тем, как остановил свой выбор на Telize. Данный сервис позволяет получить ГЕО информацию по IP адресу через их API в формате JSON. Полученная информация более-менее точная и данный сервис бесплатный. Поэтому, я решил, что лучше уже не найти и взялся за написание компонента для Yii2.

Читать далее