В этой записи мы поговорим о том, как настроить Yii2 basic. А точнее — сделаем красивые ссылки с urlManager
, как настроить базу данных и настроем форматтер.
Эта запись относится к курсу Yii2 basic.
Скрываем /web/ и красивые ссылки с urlManager
Откройте Apache файл с настройками (yii-loc.conf
):
$ sudo nano /etc/apache2/sites-available/yii-loc.conf
И измените строчку:
DocumentRoot "/var/www/yii-dev"
На
DocumentRoot "/var/www/yii-dev/web"
Чтобы скрыть /web/
из ссылки при просмотре сайта.
Откройте файл config/web.php
и раскомментаруйте там следующее:
... 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ ], ], ...
Чтобы изменить формат ссылок с index.php?r=site/about
на site/about
.
Раньше если вы заходили на страницу «About», то ссылка была в таком формате — http://yii.loc/web/index.php?r=site/about
, теперь она должна быть такой — http://yii.loc/site/about
.
Создадим и подключим базу данных
Для начала нужно создать базу данных через phpMyAdmin.
Если phpMyAdmin у вас еще не установлен, тогда следуйте этой записи — «Как установить и настроить phpMyAdmin на Ubuntu 14.04?«
- Заходим в phpMyAdmin —
http://localhost/phpmyadmin
, авторизуемся - Нажимаем на вкладку «Базы данных»
- Вводим название базы «yii_loc» и нажимаем кнопку «Создать»
- После того как база готова, нужно внести ее в конфиг, заходим в
config/db.php
и меняемdbname=yii2basic
наdbname=yii_loc
— это название только что созданной базы, «username» ставите «root» или любое другое, которые вы указали при установке MySQL, «password» пишите свой пароль. - Далее открываете консоль и заходите в корневую папку проекта:
$ cd /var/www/yii-dev/
И теперь нам нужно запустить миграцию, чтобы у нас создалась таблица migration
в недавно созданной базе данных — yii_loc
:
$ php yii migrate
Migration (миграции) нужны для того, чтобы вносить изменения в структуру базы данных и не нарушать работу других разработчиков работающих совместно с вами.
Представьте ситуацию: в проекте уже 9 таблиц, вы создали еще одну, сделали для неё работающий код (контроллер, модели и шаблоны) и другой разработчик взялся за проект, то у него будет выдавать ошибку об отсутствии этой таблицы, так как у него новых изменений в базе данных нет. Но если вы используете миграции, то когда второй разработчик запустит
php yii migrate
и увидит список нововведений в базе данных и тем самым он легко установит изменения. Таким же образом, он может «откатить» миграцию на стадию назад, если она чем-то не устраивает.
После успешного исполнения команды, у вас должно вывестись следующее:
Yii Migration Tool (based on Yii v2.0.12) Creating migration history table "migration"...Done. No new migrations found. Your system is up-to-date.
Строка «Creating migration history table «migration»…Done.» означает, что таблица migration
была успешно создана в базе данных, которую мы указали в db.php
.
Вы можете зайти в phpMyAdmin, найти yii_loc
и проверить наличие этой таблицы. Выглядит это следующим образом:
Если выводит ошибку во время запуска команды migration
Ошибки могут быть следующими:
Exception ‘yii\db\Exception’ with message ‘SQLSTATE[28000] [1045] Access denied for user ‘root’@’localhost’ (using password: NO)’
Или
Exception ‘yii\db\Exception’ with message ‘SQLSTATE[42000] [1049] Unknown database ‘yii_nepravilnoe_nazvanie_bazi»
Первая ошибка связана с тем, что вы забыли поменять стандартные данные от базы данных в файле db.php
. Как только вы их исправите — ошибка должна исчезнуть.
Вторая ошибка связана с тем, что вы ПОМЕНЯЛИ стандартный данные в файле db.php
, НО, указали неверное название базы данных и Yii2 не удалось подключиться к ней. Сверьте название созданной базы данных со значением в конфиге и ошибка должна пропасть.
Форматтеры
В Yii2 есть форматтеры (с англ. formatter), которые позволяют вам установить определенный формат чего-либо. Например — даты, времени, чисел, валюты. Устанавливая определенные настройка формата(-ов) в конфиге, вы можете использовать их глобально, следующим образом: Yii::$app->formatter
.
Настраиваются они легко, вам нужно зайти в config/web.php
и добавить новое значение в массив components
:
components' => [ ... 'db' => $db, 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ ], ], 'formatter' => [ 'dateFormat' => 'dd.MM.yyyy', 'decimalSeparator' => ',', 'thousandSeparator' => ' ', 'currencyCode' => 'EUR', ], ],
«…» означает, что часть настроек была урезана, чтобы не выводить много воды в пример.
Расшифровка параметров форматтера:
dateFormat
— это как будет выводиться датаdecimalSeparator
— это разделитесь между дробными значениями 0.1, 0.002 и т.д. Вместо точки «.», вы можете написать «,»thousandSeparator
— разделитель для тысячных цифрcurrencyCode
— основная валюта
Несколько практичных примеров использования форматтера:
// Выведет 12.5% echo Yii::$app->formatter->format(0.125, ['percent', 2]); // Выведет January 1, 2014 echo Yii::$app->formatter->format('2014-01-01', 'date'); // Вывод времени из UNIX timestamp'а echo Yii::$app->formatter->asTime(1412599260); // 14:41:00 // UTC формат времени echo Yii::$app->formatter->asTime('2014-10-06 12:41:00'); // 14:41:
У класса Formatter много предназначений, но о нем мы поговорим чуть позже, так как без живого примера мне нет смысла вам показывать все его возможности, так как это просто не заложиться у вас в голове.
Все возможности форматтера нам не пригодятся, может быть от силы два-три метода.
Читать далее — Yii2 basic: Что такое MVC, controller и action (контроллеры и экшины)?