Если вы спрашиваете: «Что такое Yii?» Ознакомьтесь с разделом Введение в Yii Framework , в котором рассматриваются преимущества Yii и представлен обзор Yii 2.0.
В этой серии «Программирование с Yii2» я расскажу читателям, как использовать Yii2 Framework для PHP. Когда вы начнете использовать Yii для реальной разработки, вы можете начать свой следующий проект с его расширенным шаблоном приложения. Помимо прочего, он предоставляет интегрированные функции управления пользователями, а также два приложения: одно для клиентского интерфейса, а другое — административный.
В этом руководстве я познакомлю вас с расширенным шаблоном Yii2 и проведу вас через основные настройки и использование. При программировании с использованием Yii2: интеграция регистрации пользователей, в которой реализовано управление пользователями поверх базового шаблона с расширением Yii2 User, в этом руководстве будет запущен новый репозиторий с расширенным шаблоном, а не продолжены примеры на нашей базовой базе кодов Yii hello.
Прежде чем мы начнем, пожалуйста, помните, я стараюсь участвовать в обсуждениях ниже. Если у вас есть вопрос или предложение по теме, пожалуйста, оставьте комментарий ниже или свяжитесь со мной в Twitter @reifman . Вы также можете написать мне напрямую.
Если вы заметили, что в этой серии произошла задержка, это потому, что я недавно вернулся из операции на мозге . Спасибо за ваше терпение и поддержку — приятно регулярно писать снова, и я с нетерпением жду продолжения освещения Yii2.
Чем отличается расширенный шаблон
Наиболее полезной причиной перехода на расширенный шаблон является реализация функций управления пользователями, таких как регистрация, вход, выход и сброс пароля.
Расширенный шаблон также предусматривает несколько деревьев доступа для более крупного веб-приложения. Он имеет интерфейсное и внутреннее веб-приложение для конечных пользователей и администраторов. Но это также может быть расширено, например, для модераторов или специального API, хотя есть и другие способы интеграции этих функций в одном приложении.
Вот диаграмма, показывающая основные различия между базовой ванилью Yii и расширенной установкой:
В моих последних уроках о расширении Yii2 User я все больше поражаюсь его набором функций в качестве альтернативы расширенному шаблону. Тем не менее, он также может быть легко интегрирован в любую установку.
Перед началом крупного проекта стоит изучить расширенный шаблон. Я собираюсь помочь вам сделать это.
Установка расширенного шаблона
Давайте начнем установку расширенного шаблона с Yii2. Мы можем следовать инструкциям в расширенном шаблоне проекта на GitHub .
Обновление Composer
Во-первых, мы убедимся, что у composer есть нужные ему пакеты:
1
2
3
4
5
6
7
8
|
$ composer global require «fxp/composer-asset-plugin:~1.0.3»
Changed current directory to /Users/Jeff/.composer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
|
Установка Yii с расширенным шаблоном
Затем мы можем установить Yii с расширенным шаблоном проекта. Мы назовем наше учебное приложение yiiplus :
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
$ composer create-project —prefer-dist yiisoft/yii2-app-advanced yiiplus
Installing yiisoft/yii2-app-advanced (2.0.6)
— Installing yiisoft/yii2-app-advanced (2.0.6)
Loading from cache
Created project in yiiplus
Loading composer repositories with package information
Installing dependencies (including require-dev)
— Installing yiisoft/yii2-composer (2.0.3)
Loading from cache
— Installing ezyang/htmlpurifier (v4.6.0)
Loading from cache
— Installing cebe/markdown (1.1.0)
Loading from cache
— Installing bower-asset/jquery (2.1.4)
Loading from cache
— Installing bower-asset/jquery.inputmask (3.1.63)
Loading from cache
— Installing bower-asset/punycode (v1.3.2)
Loading from cache
— Installing bower-asset/yii2-pjax (v2.0.4)
Loading from cache
— Installing yiisoft/yii2 (2.0.6)
Loading from cache
— Installing swiftmailer/swiftmailer (v5.4.1)
Loading from cache
— Installing yiisoft/yii2-swiftmailer (2.0.4)
Loading from cache
— Installing yiisoft/yii2-codeception (2.0.4)
Loading from cache
— Installing bower-asset/bootstrap (v3.3.5)
Loading from cache
— Installing yiisoft/yii2-bootstrap (2.0.5)
Loading from cache
— Installing yiisoft/yii2-debug (2.0.5)
Loading from cache
— Installing bower-asset/typeahead.js (v0.10.5)
Loading from cache
— Installing phpspec/php-diff (v1.0.2)
Loading from cache
— Installing yiisoft/yii2-gii (2.0.4)
Loading from cache
— Installing fzaninotto/faker (v1.5.0)
Loading from cache
— Installing yiisoft/yii2-faker (2.0.3)
Loading from cache
Writing lock file
Generating autoload files
|
Инициализация нашего приложения Yii
Теперь давайте инициализируем наше приложение:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
$ cd ~/Sites/yiiplus
$ php init
Yii Application Initialization Tool v1.0
Which environment do you want the application to be initialized in?
[0] Development
[1] Production
Your choice [0-1, or «q» to quit] 0
Initialize the application under ‘Development’ environment?
Start initialization …
generate backend/config/main-local.php
generate backend/config/params-local.php
generate backend/web/index-test.php
generate backend/web/index.php
generate common/config/main-local.php
generate common/config/params-local.php
generate console/config/main-local.php
generate console/config/params-local.php
generate frontend/config/main-local.php
generate frontend/config/params-local.php
generate frontend/web/index-test.php
generate frontend/web/index.php
generate yii
generate cookie validation key in backend/config/main-local.php
generate cookie validation key in frontend/config/main-local.php
chmod 0777 backend/runtime
chmod 0777 backend/web/assets
chmod 0777 frontend/runtime
chmod 0777 frontend/web/assets
chmod 0755 yii
chmod 0755 tests/codeception/bin/yii
… initialization completed.
|
Подготовьте базу данных
Далее я буду использовать установленную MAMP версию PHPMyAdmin для создания базы данных:
Нажмите Создать . Делая снимки экрана для учебника, я забыл нажать кнопку «Создать» и удивился, почему не смог перенести свою базу данных — ее еще не было.
Затем отредактируйте /common/config/main-local.php, чтобы включить настройки вашей базы данных:
01
02
03
04
05
06
07
08
09
10
11
|
<?php
return [
‘components’ => [
‘db’ => [
‘class’ => ‘yii\db\Connection’,
‘dsn’ => ‘mysql:host=localhost;dbname=yiiplus’,
‘username’ => ‘root’,
‘password’ => ‘-localmysqldevpwd-‘,
‘charset’ => ‘utf8’,
],
‘mailer’ => [
|
Затем вы готовы запустить миграцию базы данных для инициализации вашего приложения. Это в первую очередь устанавливает таблицу для управления пользователями:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
$ ./yii migrate
Yii Migration Tool (based on Yii v2.0.6)
Creating migration history table «migration»…Done.
Total 1 new migration to be applied:
m130524_201442_init
Apply the above migration?
*** applying m130524_201442_init
> create table {{%user}} … done (time: 0.007s)
*** applied m130524_201442_init (time: 0.022s)
Migrated up successfully.
|
Настройка Apache для внешнего и внутреннего сайтов
Когда мы настраиваем нашу среду разработки или производства с помощью расширенного шаблона, нам нужно указать веб-серверу другой корневой путь, фактически два.
Сначала мы отредактируем наш файл hosts, включив в него frontend.dev и backend.dev:
1
2
3
4
5
|
$ more /etc/hosts
127.0.0.1 localhost
127.0.0.1 frontend.dev
127.0.0.1 backend.dev
|
В моей среде разработки с MAMP я свяжу свой каталог yiiplus с htdocs MAMP:
1
2
|
$ cd /Applications/MAMP/htdocs/
$ ln -s ~/Sites/yiiplus /Applications/MAMP/htdocs/yiiplus
|
Затем я активирую (раскомментирую) включение для виртуальных хостов:
1
2
3
4
|
$ nano /Applications/MAMP/conf/apache/httpd.conf
# Virtual Hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
|
И настройте пути для каждого из моих имен серверов:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
$ nano /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
NameVirtualHost *:8888
<VirtualHost *:8888>
ServerName frontend.dev
DocumentRoot /Applications/MAMP/htdocs/yiiplus/frontend/web/
<Directory «/Applications/MAMP/htdocs/yiiplus/frontend/web/»>
# use mod_rewrite for pretty URL support
RewriteEngine on
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule .
# use index.php as index file
DirectoryIndex index.php
# …other settings…
</Directory>
</VirtualHost>
<VirtualHost *:8888>
ServerName backend.dev
DocumentRoot /Applications/MAMP/htdocs/yiiplus/backend/web/
<Directory «/Applications/MAMP/htdocs/yiiplus/backend/web/»>
# use mod_rewrite for pretty URL support
RewriteEngine on
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule .
# use index.php as index file
DirectoryIndex index.php
# …other settings…
</Directory>
</VirtualHost>
|
Когда это будет завершено, вот как будет выглядеть интерфейсный сайт по адресу http://frontend.dev:8888 :
Внутренний сайт запросит вход в систему — для администраторов:
Изучение управления пользователями
Теперь я собираюсь рассказать вам об основных функциях управления пользователями в расширенном шаблоне. Но сначала нам нужно убедиться, что мы получаем письма от Yii в нашей среде разработки.
Настройка доставки электронной почты
Управление пользователями отправляет электронные письма для сброса пароля, поэтому нам нужно активировать конфигурацию Yii SwiftMailer SMTP. Я собираюсь использовать Mailtrap.io , который я изучал в предыдущем уроке Введение в Mailtrap: поддельный SMTP-сервер для предпроизводственного тестирования электронной почты приложения .
Mailtrap предоставляет поддельному SMTP-серверу для вашей команды разработчиков, чтобы тестировать, просматривать и обмениваться электронными письмами, отправленными из подготовительных сред, и тестировать с реальными данными без риска спама от реальных клиентов. Для многих задач разработки, использование Mailtrap будет бесплатным.
По сути, вы регистрируетесь в Mailtrap и отправляете всю электронную почту в своей рабочей среде через ваш поддельный SMTP-сервер Mailtrap. Вот краткий видеообзор Mailtrap от Railsware:
Если вы будете следовать учебному пособию и создать учетную запись Mailtrap, вы увидите свою демо-папку «Входящие»:
И когда вы щелкнете по значку «Настройки» в списке входящих, вы увидите, что каждая папка «Входящие» Mailtrap имеет свои собственные учетные данные SMTP-сервера:
С помощью Yii я обновляю настройки SMTP SwiftMailer в /common/config/main-local.php. Вот как это может выглядеть:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
‘mailer’ => [
‘class’ => ‘yii\swiftmailer\Mailer’,
‘viewPath’ => ‘@common/mail’,
‘useFileTransport’ => false,
‘transport’ => [
‘class’ => ‘Swift_SmtpTransport’,
‘host’ => ‘mailtrap.io’,
‘username’ => ’29xxxxxxxxxxx72′,
‘password’ => ‘2c3xxxxxxxxxxf5’,
‘port’ => ‘2525’,
‘encryption’ => ‘tls’,
],
],
|
Обратите внимание, что если вы не настроите viewPath
как показано выше, вы можете столкнуться с ошибкой вокруг файлов шаблонов электронной почты, которые не были найдены .
Регистрация и регистрация
Вот как выглядит интерфейсный экран регистрации:
Вы попадете на главную страницу в состоянии входа в систему:
Войти в систему
Вот экран входа в систему:
Забыли свой пароль
А вот экран « Забыли пароль» :
Если вы попросите новый пароль, вы найдете его в Mailtrap :
Что дальше?
Вы можете проверить мою серию Сборка стартапа с помощью PHP , в которой используется расширенный шаблон Yii2. Кроме того, если вы заинтересованы в интеграции этого учебника с пользователем Yii2, ознакомьтесь с руководством по интеграции пользователя Yii2 с расширенным шаблоном и аутентификацией Google (скоро).
Надеюсь, вам понравилось знакомство с расширенным шаблоном приложения Yii2. Мне было бы интересно услышать ваши отзывы в комментариях о том, предпочитаете ли вы его основной шаблон.
Следите за будущими уроками в моей серии «Программирование с Yii2», поскольку я продолжаю изучать различные аспекты фреймворка. Я приветствую тематические и тематические запросы. Вы можете опубликовать их в комментариях ниже или написать мне по электронной почте на моем сайте Lookahead Consulting .
Если вы хотите узнать, когда появится следующий учебник по Yii2, следуйте за мной @reifman в Твиттере или зайдите на страницу моего инструктора . Моя страница инструктора будет включать все статьи из этой серии, как только они будут опубликованы.
- Yii2 Расширенный шаблон
- Yii2 Developer Exchange
- Коллекция скриптов на основе Yii на CodeCanyon