Yii2 basic: Настройка

· Yii2 basic · 4 мин чтения

В этой записи мы поговорим о том, как настроить 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, авторизуемся
  • Нажимаем на вкладку «Базы данных»

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 и проверить наличие этой таблицы. Выглядит это следующим образом:

Yii2 basic таблица миграции

Если выводит ошибку во время запуска команды 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 (контроллеры и экшины)?