Храним Emoji смайлики в mysql используя Yii2

Вначале в конфигурации подключения к БД меняем кодировку подключения на utf8mb4

'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'charset' => 'utf8mb4',
        ],
    ],

Далее заменяем кодировку таблиц базы данных с utf8_general_ci на utf8mb4_general_ci. Вставляем смайлики и радуемся что они корректно сохраняются в таблицах.

Загрузка файла на Яндекс.Диск с помощью REST API и php

Подразумевается, что вы успешно зарегистрировали приложение с доступом к Яндекс Диску, получили токен и даже отправили запрос на получение ссылки для загрузки файла на Яндекс.Диск и записали этот url в переменную link. Теперь дело за малым, нужно только отправить файл PUT методом, но в этом и проблема, в официальной документации этому моменту почти не уделено внимания и вроде все делается довольно просто, так оно и есть на самом деле. Ниже представлен php код, который загрузит файл.

читать далее

Объединение результатов нескольких потоков в gulp

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

читать далее

Webpack source map для удобной отладки

Сегодня на операционном столе сайт с интерфейсом администратора. Причина заболевания: переезд с gulp на webpack.
Первая проблема: удобный source map.
Поехали 😉

читать далее

Переопределяем __set и __get методы для аттрибута модели Yii2

Не всегда получается красиво сохранить приходящие данные в БД, к примеру такая ситуация может возникнуть при сохранении списка в одну ячейку, чтобы было более понятно приведу часть кода представления:

$form->field($model, 'color')->checkboxList(Yii::$app->params['color'], [
   'item' => function($index,$label,$name, $checked, $value){
      return Html::checkbox($name, $checked, [
         'value' => $value,
         'label' => '<label class="color ' . $label .'" for="' . $value . '"></label>',
         'id' => $value
      ]);
   }
]);

Здесь мы выводим список чекбоксов в которых предлагаем выбрать нужные цвета, данное представление нам отправит массив отмеченных значений.

читать далее

Глобальный .gitignore

Собственно, все указано в заголовке. Вам остается только создать новый .gitignore или указать на существующий.

git config --global core.excludesfile ~/.gitignore

Стандартный url для определенного контроллера

'admin' => 'admin/index',
'admin/<action:[\\w\\-]+>' => 'admin/<action>'

Данный правила можно разместить в секции rules urlManager’а в конфигурации приложения и получить стандартные url для определенного контроллера, в нашем случае для контроллера admin. При этом enablePrettyUrl и enableStrictParsing могут быть установлены в true. Полезно когда нужно, чтобы без дополнительной головной боли работали стандартная сортировка и фильтрация в GridView для admin, а так же срабатывали другие правила для формирования ЧПУ в другом контроллере.

Получить список всех слушателей jQuery объекта

Пост буквально одной строкой! Проблема — производительность.
Почему? Часто навешиваете обработчик и забываете его снять? Работаете в команде, и не можете гарантировать, что кто-нибудь не навесил случайно на $(window).on(‘resize’,..) кучу тяжелых функций?
Посмотрите список всех обработчиков

jQuery._data( window, "events" );

P.S. и да, не забывайте давать своим событиям «namespace», например так:

$(window).on('resize.playstop', myFunction)
//потом легко снять
$(window).off('resize.playstop')

P.P.S подсмотрел кусочек про _data на StackOverflow.

Apache2: виртуальные домены для локальной разработки

Для локальной разработки мы обычно используем веб-сервер apache, который по-умолчанию настроен на директорию /var/www/ в которой можно создавать проекты, но в большинстве случаев это неудобно и хотелось бы использовать папки профиля пользователя для работы с проектами, как раз об этом и о виртуальных доменах и пойдет речь в данной небольшой заметке.

читать далее

Получить все роли пользователей в Yii2

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

Yii::$app->getAuthManager()->getRoles()

или то же самое с помощью «магии»

Yii::$app->authManager->roles

Думаю еще одной интересной строчкой будет преобразование полученного массива в массив название роли -> описание, а сделать это можно так:

ArrayHelper::map(Yii::$app->authManager->roles,'name','description')
При копировании материалов обратная ссылка на play-stop.ru желательна обязательна!