Категория: Заметки yii2

При создании functional тестов для rest full api в yii2 можно столкнуться с тем же что и я, а именно особенной, рабочей настройке codeception. И так, как всегда меньше слов, больше кода.  Как видим у меня есть api приложение для которого я и делаю функциональное тестирование. К слову: метод авторизации я выбрал Bearer и возврат данных в формате JSON. Как выглядит Bearer авторизация в контроллере: class TestController extends Controller { /** * @inheritdoc */ public function behaviors(): array { return array_merge(parent::behaviors(), [ 'authenticator' => [ 'class' => HttpBearerAuth::className(), ], 'access' => [ 'class' => AccessControl::className(), 'rules' => [ [ 'allow' => true, 'roles' => [User::ROLE_API], ], ], ...

04.02.2017

Частенько в блогах может понадобиться возможность подключить подсветку вставляемого кода. И как правило базовая комплектация тега "pre" или "code" начинает не устраивать. Как один из вариантов можно поставить себе интересный плагин syntaxhighlighter для редактора TinyMCE. В принципе использование syntaxhighlighter отдельно от TinyMCE так же возможно, просто Вам нужно будет вручную обернуть код в тег "pre" и написать нужный brush (кисть) для подсветки. И так, допустим мы пользуемся редактором TinyMCE, тогда поставим для него плагин вставки кода (если вы пользутетесь другим редактором или вовсе без него, пропускаем этот шаг): Идем СЮДА и скачиваем сам плагин. Распаковываем содержимое архива в папку plugins редактора TinyMCE. (у меня например это vendor\....\yii2-tinymce\vendors\tinymce\js\tinymce\plugins\). В результате будет структура: vendor\....\yii2-tinymce\vendors\tinymce\js\tinymce\plugins\sh4tinymce\... Если у Вас редактор&n...

03.11.2015

Так как же добавить микроразметку, а именно структурированные данные к хлебным крошкам (breadcrumbs) для своего сайта на yii2? UPD: Если Вы используете composer, перейдите на страницу расширения. Посмотреть на github. Все как всегда просто. Нам нужно создать компонент, который будет обрабатывать каждый элемент в хлебных крошках применяя к нему нужный нам шаблон с разметкой. Стандартный класс yii\widgets\Breadcrumbs не дает нам видоизменить ссылки хлебных крошек. По крайней мере такого свойства я не нашел. Поэтому создаем наш класс, который поможет в этом деле. Создаем: frontend\components\Breadcrumbs\BreadcrumbsUtility.php - если какой-то директории нет, создаем ее сами Закидываем в BreadcrumbsUtility.php содержимое следующего вида: <?php namespace frontend\components\Breadcrumbs; use yii\helpers\Url; use yii\helpers\Html; class BreadcrumbsUtility { /** * @param $links array breadcrumbs links (yii\widgets\Breadcrumbs Public property lin...

30.10.2015

Статья является сопутствующей двум предыдущим по sphinx.  1) Установка и настройка sphinx на Debina 7 2) Создание альтернативного запуска sphinx. Сценарий инициализации sphinx. Debian 7   И так если два первых шага выполнено, значит трудное (вовсе нет:) ) уже позади. Осталось включить yii2 в работу со sphinx. К счастью есть уже готовый пакет для нашего фреймворка, поэтому сперва ставим расширение yii2-sphinx.  Добавляем в секцию require файла composer.json: "yiisoft/yii2-sphinx": "~2.0.0" (версия может отличаться) После установки настраиваем расширение на подключение к sphinx: Добавляем в секцию components файла config/main.php: 'sphinx' => [ 'class' => 'yii\sphinx\Connection', 'dsn' => 'mysql:host=127.0.0.1;port=9313;', // Обязательно укажите порт, который Вы задали в конфигурационном файле sphinx, секция searchd параметр listen 'username' => '', 'password' => '', ], Вот и все. Можно приступать к полнотек...

29.10.2015

В ходе изучения yii2 неожиданно можем вспомнить и про карту сайта для поисковых роботов именуемую sitemap.  Рассмотрим простой пример реализации sitemap для yii2: Добавим в urlManager rules правило 'sitemap.xml' => 'sitemap/index' файла frontend\config\main.php: return [ 'id' => 'test-Frontend', 'name' => 'test', 'basePath' => dirname(__DIR__), 'bootstrap' => ['log'], 'controllerNamespace' => 'frontend\controllers', 'components' => [ 'user' => [ 'identityClass' => 'common\models\User', 'enableAutoLogin' => true, ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules'=> [ ... 'sitemap.xml' => 'sitemap/index', ... ] ] ] В результате обращения по адресу https://ваш.сайт/sitemap.xml будут переданы в...

20.10.2015

В один из этапов изучения yii2 Вам точно может понадобиться сделать ЧПУ на yii2. Причем красивые, еще и с возможностью личного создания/хранения в БД. Вообще у многих CMS и их компонентов используется подобная схема. Есть длинная не красивая ссылка содержащая GET данные и др., а ей соответствует красивый алиас. Который можно отредактировать как захочется без изменений правил перенаправлений в apache2 или самом фреймворке. И вот я задался таким вопросом, с решением которого мне помогали на форуме. Поиск такого решения растянулся на 3 страницы и 4 месяца. Теперь же я просто оставлю это решение здесь. Придется расширить правила urlManager двумя классами. Принцип работы таков: у нас есть ссылка вида контроллер/действие или контроллер/действие/параметр и т.п. Теперь нам нужно превратить ее в желаемую SEF ссылку, чтобы при обращении по алиасу (короткой ссылке) мы попадали на наш контроллер/действие... Пример: /registration => /user/registration или /login => /user/login/param или /bl...

24.09.2015

Как-то запарился я с распознаванием текста. Причем нужно было бесплатно распознавать в не ограниченном количестве текст с фотографий. Гугл сразу натолкнул на "TESSERACT". Сразу скажу, что в последствии я так и не смирился с ним. Распознавал он у меня именно с фотографий текст ужасно. Причем не важно какой язык.  Я думаю что он подойдет для распознания текста на белом листе с черными буквами. Причем шрифт думаю должен быть не ниже 12-14 px. Вообщем с моих фото из всего текста распознавалось только пару слов. На черно-белом фоне не тестировал. Установка на Debian: apt-get install tesseract-ocr Затем находим папку после установки: find / -name tessdata Нашли: /usr/share/tesseract-ocr/tessdata В эту папку в последующем можно скачать русский язык (по умолчанию установлен уже английский). wget https://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.rus.tar.gz После чего распаковываем ФАЙЛЫ скаченного архива в найденную папку /usr/share/tesseract-ocr/ (там б...

21.09.2015

Быстрое решение ошибки: Your local changes to the following files would be overwritten by merge: .... Please, commit your changes or stash them before you can merge. И так, выполняем в терминале: git fetch --allgit reset --hard origin/master Вот и все. Если такая ошибка возникла при git pull на сервер, то не забываем накатить миграции и запустить композер. php composer.phar install php yii migrate   На этом все....

18.09.2015

Так почему же на продакшн сервере могут появляться ошибки которых нет на development сервере?  Ответ очень просто, на локальном сервере выключен показ ошибок конфигурацией php, чего не скажешь о production сервере.  Чтобы устранить данное недоразумение, включаем на локальном сервере в конфигурации php показ ошибок: Открываем файл php.ini и ищем строку error_reporting = E_ERROR , меняем E_ERROR на E_ALL, сохраняем файл и перезапускаем сервер. После чего и на локальном сервере появятся ошибки которые фиксим и выгружаем в продакшн. Чтобы применить показ ошибок только конкретно к одному сайту, можно в файле index.php (в yii2 он лежит \backend\web\index.php  и \frontend\web\index.php) добавим строчку: error_reporting(E_ALL); Готово! Ну или поступить жестко, временно, это на продакн сервере в файле php.ini установить error_reporting = E_ERROR и перезагрузить apache2 (service apache2 restart). Но лучше конечно писать код без ошибок:)...

10.09.2015

Рано или поздно придется столкнуться с тем, чтобы выгрузить уже свой первый проект на продакшн сервер. Это можно сделать несколькими способами. Один из способов сегодня опишу и я, которым пользуюсь. Мягко говоря он очень прост, если хочется побыстрее все выгрузить и долго не заморачиваться всякими настройками. Много слов никто не любит поэтому: Делаем комит в репозиторий. Теперь в нашем репозитории имеются все необходимые файлы для загрузки на сервер.  Заходим на наш продакшн сервер под ssh. Ставим git. Подробные инструкции по установке гита на сервер расписывать не буду, в интернете полно инструкций. Один из способов:  apt-get install git-core git config --global user.name "NewUser" git config --global user.email you@email.com     4. Далее выполняем: cd /home/username/web/domain.com/public_html/ (где public_html корневая папка сайта) git clone https://username@bitbucket.org/username/repository.git (вместо ссылки используйте ссылку на свой репоз...

10.09.2015

Так что же делать если в один из прекрасных дней мы получили ошибку: 1305 SAVEPOINT LEVEL1 does not existThe SQL being executed was: RELEASE SAVEPOINT LEVEL1 and rollBack thisException: Failed to commit transaction: transaction was inactive. Все это дело появляется при накатывании миграции yii2. Почему? Потому что скорее всего миграция была сгенерирована через какой-нибудь генератор миграций. Даже скорее всего через пакет: "insolita/yii2-migration-generator": "*"Поэтому чтобы не нервничать, достаточно переименовать функции "safeUp" и "safeDown" в "up" и "down". Лично такой подход мне помог. И вообще не понятно, зачем генератор такое генерирует. Но в принципе решение проблемы есть, так что можно генерировать миграции дальше, если конечно мы не пишем их ручками:) ...

10.09.2015