Рубрика: php

  • Yii2. Telegram API. Как отправить аудио?

    Решил сделать небольшой цикл статей с примерами о том, как отправить медиа-файлы в Telegram при помощи API. Сейчас речь пойдет о аудио-файлах. В этой и следующих статьях, использую расширение SonkoDmitry\Yii\TelegramBot\Component. За долгое время экстеншн прижился и отлично работает — за что автору огромная благодарность. \Yii::$app->tg->sendAudio([ ‘chat_id’ => $targetChatId , ‘audio’ => \Yii::getAlias(‘@frontend/web/files/source_file.oga’), ‘caption’ => «Текстовое […]

  • Yii2. Как сделать deleteAll с условием NOT IN?

    Удаление записей в Yii2 при помощи метода deleteAll и условии not in выглядит не очень очевидным и столкнувшись с этой задачей, решил написать короткую заметку с примером реализации. Секрет в том, что условие надо задавать в виде массива. Приведу пример: SomeModel::deleteAll([ ‘AND’, ‘post_id’ => $id, [‘not in’, ‘id’, $arrayOfIds], ]); Этот пример сгенерирует следующий запрос […]

  • Yii2. Dropzone. Как установить несколько виджетов на одной странице?

    В статье речь пойдет о расширении kato/DropZone (https://github.com/perminder-klair/yii2-dropzone) — точнее о том, как разместить несколько виджетов на одной странице. Если взглянуть на исходный код — ответ кажется достаточно очевидным, но, все же считаю нужным показать рабочий пример размещения нескольких виджетов на одной странице. Итак, вне зависимости от Вашей разметки — будь-то разные табы или просто […]

  • Php. Как разбить строку по переносам строк (explode by new line)?

    В небольшой статье рассмотрим пример, как в php разбить строку по переносам, независимо от платформы чтения и платформы создания файла. Интересно? Поехали! Для решения задачи прибегнем к помощи регулярных выражений и метода preg_split. $list = preg_split(‘/\r\n|\r|\n/’, $manyLinesInOneString); Если разобрать регулярку — то она по сути, очень проста и пытается разбить строку по одному из трех […]

  • Yii2. Как сделать редирект в контроллере в beforeAction?

    Ситуация, когда надо перед действием проверить какую-то логику и при необходимости сделать редирект достаточно частая. Но решение здесь не очень очевидное — поэтому приведу пример. Ниже пример редиректа в методе beforeAction: public function beforeAction($action) { if( !parent::beforeAction($action) ){ return false; } if( !\Yii::$app->user->isPrivateSessionActive() ) { $this->redirect([‘/auth’]); } return true; } Нас интересует второе условие. Особенность […]

  • Yii2. AccessControl не работает при указанном beforeAction.

    Сегодня столкнулся с ситуацией, когда в случае переопределенного beforeAction не срабатывали правила доступа accessControl. Проблему быстро решил, но думаю я не один, кто с ней сталкивался — поэтому напишу решение. Итак, мой метод имел следующий вид: public function beforeAction($action) { if( !\Yii::$app->user->isPrivateSessionActive() ) { $this->redirect([‘/auth/’]); } return true; } Пока пользователь был авторизован — всё […]

  • Yii2. Как сделать редирект в beforeAction (redirect in beforeAction)?

    В этой короткой статье разберем типичную ситуацию, когда в зависимости от определенных условий в методе beforeAction нужно сделать редирект на другой адрес. По сути, всё очень просто, но может не до конца очевидно. Суть в том, что метод должен при условии редиректа возвращать true, а не false, как могло бы показаться на первый взгляд. public […]

  • Php. Пример использования array_reduce для проверки заполнености данных формы

    Недавно стала простая задача проверить все ли данные в форме заполнены и в зависимости от этого — пропускать пользователя дальше или нет. Специфика задачи была в постепенном заполнении данных через ТГ-бота с последующим сохранением в кеш. Дабы не городить цикл — решил задачу при помощи array_reduce. В этой статье пример решения задачи. Итак на входе […]

  • Php. Как работать с ключами и значениями в array_filters?

    В короткой статье приведу пример работы с ключами массива при фильтрации массива при помощи array_filter() на php . Начиная с версии 5.6 в функции array_filter появилась удобная возможность работы с ключами. Для этого следует третьим параметром передать одну из констант: — ARRAY_FILTER_USE_KEY — ARRAY_FILTER_USE_BOTH Первая ждет в анонимной функции один параметр и это будет ключ […]

  • Yii2. Rules. Rbac. Как добавить или исключить action из правила?

    При работе с RBAC в Yii2 может быть необходимость закрыть все action из контроллера по определенным правилам, но при этом несколько из них все-таки следует оставить открытыми или, например, закрыть по другим правилам. В этой статье пример решения проблемы. Ниже приведу метод behaviors() из контроллера: public function behaviors() { $parentBehaviors = parent::behaviors() ; $self = […]