php yii2 для начинающих

Основы Yii Framework для чайников

php yii2 для начинающих. Смотреть фото php yii2 для начинающих. Смотреть картинку php yii2 для начинающих. Картинка про php yii2 для начинающих. Фото php yii2 для начинающих

Yii Framework представляет собой один из лучших PHP-фреймворков, предназначенных для разработки больших веб-приложений. В цикле «Yii Framework для чайников» мы научимся разворачивать yii-приложение на сервере, узнаем как работать с фреймворком и познакомимся с основными возможностями, которые он предоставляет. Все это я постараюсь рассказать максимально просто и наглядно.

Развертка Yii-приложения

Для того, чтобы использовать Yii Framework необходимы:

При этом в папке сайта будет развернуто демонстрационное yii-приложение и выставлены требуемые права на папки и файлы.

Структура Yii-приложения

Рассмотрим папки, находящиеся в каталоге /srv/www/site.com/

Настройка Yii-приложения

Любые взаимодействия с пользователем в yii-приложении происходят через bootstrap-файл index.php

Большинство настроек находятся в файле /config/main.php. Файл конфигурации возвращает многомерный ассоциативный массив настроек, некоторые из которых по умолчанию предопределены.

Создание БД для будущего приложения

В качестве примера мы будем работать с базой данных, содержащей некоторое подобие хабра-комментариев и хабра-пользователей. Наглядно ее можно представить следующим образом:

php yii2 для начинающих. Смотреть фото php yii2 для начинающих. Смотреть картинку php yii2 для начинающих. Картинка про php yii2 для начинающих. Фото php yii2 для начинающих

SQL-запросы для создания соответствующих таблиц:

Источник

Программирование с YII2: приступаем к работе

Установка YII2

Документация

Вы можете найти подробную инструкцию здесь, я же пробегусь по простой и типичной для Mac OS X установке и настройки среды. У фреймоврка есть подробная документация и описание классов, которое содержит все детали о YII.
От переводчика. Я в свою очередь не имею под рукой яблочного девайса и буду проделывать все действия под Ubuntu (запущенной под VMWare Player).

Установка Composer

Для комфортного использования фреймворка рекомендуется использовать популярный менеджер расширений PHP – Composer. Если он у вас еще не установлен проделайте следующее:

Установка YII2

Теперь используем Composer для установки YII2. Для установки требуется аккаунт на GitHub, если у вас его нет – зарегистрируйтесь.
Давайте назовем наш первый проект «hello»:

YII2 поддерживает два типа приложений для разработки: простые и продвинутые. Для данного урока мы будем использовать простое приложение, оно устанавливается по умолчанию. Шаблон продвинутого приложения поддерживает front-end, back-end и консоль, так же как WordPress, это административная панель и задачи для cron.

Установка и настройка локальной среды разработки

Я использую бесплатное ПО MAMP for OS X с открытым исходным кодом, для разработки. Убедитесь, что MAMP запущен и его web сервер и сервер базы данных запущены. Затем создайте символьную ссылку на директорию с сайтом:

Теперь, если вы настроили все верно, то открыв localhost:8888/hello/web вы увидите простой шаблон приложения YII2 с Bootstrap 3.x.
php yii2 для начинающих. Смотреть фото php yii2 для начинающих. Смотреть картинку php yii2 для начинающих. Картинка про php yii2 для начинающих. Фото php yii2 для начинающих
Эта страница удивит разработчиков, ранее разрабатывающих на YII 1.1, где не был предустановлен Bootstrap последней версии, который прочно занял свое место в сети.

YII архитектура приложения

Одна из ключевых особенностей фреймворка – поддержка паттерна MVC. Это позволяет создавать более структурированный код, который проще понимать, упрощает многие вещи, которые реализуются с трудом на PHP, такие как безопасность и автоматическая кодогенерация. Также это способствует поддержке и повторному использованию кода.
В приложении YII весь трафик направляется на один файл /web/index.php. Этот файл загружает YII, зависимости, а затем запускает наше приложение.

По умолчанию это Index метод в файле /controllers/SiteController.php

Как правило, в контроллерах много методов, но с минимальным количеством кода. Контроллеры управляют доступом, загружают модели и представления. Основная смысловая нагрузка должна лежать на моделях, а представления лишь отображают шаблоны.
По умолчанию YII отображает /views/layouts/main.php в качестве представления для /views/site/index.php. main.php поддерживает html и css структуру страницы с тулбаром и контентом. Внутри main.php происходит вызов содержимого:

Пишем приложение «Привет мир!»

Включаем красивые URL-адреса

В начале давайте включим красивые адреса при помощи mod_rewrite. Если на домашней странице вы кликнете по кнопке about то увидите адрес подобный этому: localhost:8888/hello/web/index.php?r=site%2Fabout. Мы же сейчас его приведем к такому виду localhost:8888/hello/web/site/about.
В директории config хранятся настройки всей вашей среды: настройки веб приложения, консольного приложения и настройки баз данных. Изменим файл /config/web.php следующим образом:

Убедитесь, что в MAMP включен mod_rewrite, если же возникли проблемы посмотрите ветку на stackoverflow.
В вашем браузере перейдите по адресу localhost:8888/hello/web/site/about, теперь там вы должны увидеть страницу About простого приложения YII.

Создаем экшн

Следующим шагом создадим действие для контроллера, назвав Say, для повтора нашего сообщения. В файле /controllers/SiteController.php добавим следующее:

Эта функция будет искать параметр target в адресе url для его вывода на экран. В случае его отсутствия выведется просто «World». В фреймворке YII экшены реализованы как методы с префиксом actionИмяЭкшена. В класссе SiteController мы использовали public function actionSay для создания экшена Say.
Стандартным поведением метода render является поиск файла в views/ControllerID/ViewName.php поэтому давайте создадим в /views/site/ файл say.php:

Настройка вашей удаленной среды

Простое приложение YII должно запускаться на серверах Apache и Nginx «из коробки», я буду приводить инструкции по запуску на Apache, про Nginx вы сможете найти здесь.

Создаем репозиторий на GitHub

/Sites/hello/.gitignore, чем затем удалять в ручную лишнее. Хотя оба варианта допустимы.
Я использую приложение GitHub Mac OS X(https://mac.github.com/), хотя вы также можете воспользоваться командной строкой для инициализации репозитория. Например так(замените «youraccount» вашим именем на GitHub:

От переводчика. Я в качестве репозитория предпочитаю использовать Bitbucket, так как он позволяет иметь приватные репозитории бесплатно.
Конфигурируем Apache на сервере
Если у вас до сих пор не сконфигурирован сервер, рекомендую посмотреть на инструкцию по конфигурации сервера на Ubuntu (http://jeffreifman.com/digitalocean). Если у вас есть IP адрес, сконфигурируйте DNS вашего сервера:

Теперь войдите удаленно по ssh на ваш сервер при помощи IP или доменного имени

Обновите кофигурацию, установите Git, включите mod_rewrite для Apache и mcrypt для PHP.

Настройка доступа удаленного сервера к GitHub
Теперь мы настроим pull запросы с GitHub. Вначале установите Git

Теперь мы создадим группу для www, добавим данные и GitHub пользователей и настроим их права:

Теперь создадим ключ для синхронизации с репозиторием:

Вы увидите нечто похожее на это, вам необходимо скопировать и вставить этот ключ на GitHub
(если возникле проблемы посмотрите здесь (https://help.github.com/articles/error-permission-denied-publickey/)):
php yii2 для начинающих. Смотреть фото php yii2 для начинающих. Смотреть картинку php yii2 для начинающих. Картинка про php yii2 для начинающих. Фото php yii2 для начинающих
Зайдите в раздел настроек репозитория и добавьте этот ключ:
php yii2 для начинающих. Смотреть фото php yii2 для начинающих. Смотреть картинку php yii2 для начинающих. Картинка про php yii2 для начинающих. Фото php yii2 для начинающих
Затем вы увидите что-то подобное:
php yii2 для начинающих. Смотреть фото php yii2 для начинающих. Смотреть картинку php yii2 для начинающих. Картинка про php yii2 для начинающих. Фото php yii2 для начинающих
Наконец-то вы сможете склонировать ветку на ваш сервер:

Если все правильно сконфигурированно то вы увидите:
php yii2 для начинающих. Смотреть фото php yii2 для начинающих. Смотреть картинку php yii2 для начинающих. Картинка про php yii2 для начинающих. Фото php yii2 для начинающих
По мере увеличения количества кода вы через репозиторий сможете легко синхронизировать код локальной машины и продакшн-сервера. Это гораздо проще чем синхронизировать архивом или вручную, вы убедитесь в этом сами в процессе дальнейшего обучения.
Создание конфигурации сайта для Apache
Создадим конфигурационный файл:

Измените доменное имя на ваше:

Убедитесь в том что ваше приложение работает пройдя по ссылке yourdomain.com/site/say?target=World! (Отладочный тулбар фреймворка внизу страницы будет отключен!)
php yii2 для начинающих. Смотреть фото php yii2 для начинающих. Смотреть картинку php yii2 для начинающих. Картинка про php yii2 для начинающих. Фото php yii2 для начинающих
Поздравляю! Теперь мы готовы приступить к изучению более сложных особенностей фреймворка!

Источник

Программирование с YII2: приступаем к работе

Установка YII2

Документация

Вы можете найти подробную инструкцию здесь, я же пробегусь по простой и типичной для Mac OS X установке и настройки среды. У фреймоврка есть подробная документация и описание классов, которое содержит все детали о YII.
От переводчика. Я в свою очередь не имею под рукой яблочного девайса и буду проделывать все действия под Ubuntu (запущенной под VMWare Player).

Установка Composer

Для комфортного использования фреймворка рекомендуется использовать популярный менеджер расширений PHP – Composer. Если он у вас еще не установлен проделайте следующее:

Установка YII2

Теперь используем Composer для установки YII2. Для установки требуется аккаунт на GitHub, если у вас его нет – зарегистрируйтесь.
Давайте назовем наш первый проект «hello»:

YII2 поддерживает два типа приложений для разработки: простые и продвинутые. Для данного урока мы будем использовать простое приложение, оно устанавливается по умолчанию. Шаблон продвинутого приложения поддерживает front-end, back-end и консоль, так же как WordPress, это административная панель и задачи для cron.

Установка и настройка локальной среды разработки

Я использую бесплатное ПО MAMP for OS X с открытым исходным кодом, для разработки. Убедитесь, что MAMP запущен и его web сервер и сервер базы данных запущены. Затем создайте символьную ссылку на директорию с сайтом:

Теперь, если вы настроили все верно, то открыв localhost:8888/hello/web вы увидите простой шаблон приложения YII2 с Bootstrap 3.x.
php yii2 для начинающих. Смотреть фото php yii2 для начинающих. Смотреть картинку php yii2 для начинающих. Картинка про php yii2 для начинающих. Фото php yii2 для начинающих
Эта страница удивит разработчиков, ранее разрабатывающих на YII 1.1, где не был предустановлен Bootstrap последней версии, который прочно занял свое место в сети.

YII архитектура приложения

Одна из ключевых особенностей фреймворка – поддержка паттерна MVC. Это позволяет создавать более структурированный код, который проще понимать, упрощает многие вещи, которые реализуются с трудом на PHP, такие как безопасность и автоматическая кодогенерация. Также это способствует поддержке и повторному использованию кода.
В приложении YII весь трафик направляется на один файл /web/index.php. Этот файл загружает YII, зависимости, а затем запускает наше приложение.

По умолчанию это Index метод в файле /controllers/SiteController.php

Как правило, в контроллерах много методов, но с минимальным количеством кода. Контроллеры управляют доступом, загружают модели и представления. Основная смысловая нагрузка должна лежать на моделях, а представления лишь отображают шаблоны.
По умолчанию YII отображает /views/layouts/main.php в качестве представления для /views/site/index.php. main.php поддерживает html и css структуру страницы с тулбаром и контентом. Внутри main.php происходит вызов содержимого:

Пишем приложение «Привет мир!»

Включаем красивые URL-адреса

В начале давайте включим красивые адреса при помощи mod_rewrite. Если на домашней странице вы кликнете по кнопке about то увидите адрес подобный этому: localhost:8888/hello/web/index.php?r=site%2Fabout. Мы же сейчас его приведем к такому виду localhost:8888/hello/web/site/about.
В директории config хранятся настройки всей вашей среды: настройки веб приложения, консольного приложения и настройки баз данных. Изменим файл /config/web.php следующим образом:

Убедитесь, что в MAMP включен mod_rewrite, если же возникли проблемы посмотрите ветку на stackoverflow.
В вашем браузере перейдите по адресу localhost:8888/hello/web/site/about, теперь там вы должны увидеть страницу About простого приложения YII.

Создаем экшн

Следующим шагом создадим действие для контроллера, назвав Say, для повтора нашего сообщения. В файле /controllers/SiteController.php добавим следующее:

Эта функция будет искать параметр target в адресе url для его вывода на экран. В случае его отсутствия выведется просто «World». В фреймворке YII экшены реализованы как методы с префиксом actionИмяЭкшена. В класссе SiteController мы использовали public function actionSay для создания экшена Say.
Стандартным поведением метода render является поиск файла в views/ControllerID/ViewName.php поэтому давайте создадим в /views/site/ файл say.php:

Настройка вашей удаленной среды

Простое приложение YII должно запускаться на серверах Apache и Nginx «из коробки», я буду приводить инструкции по запуску на Apache, про Nginx вы сможете найти здесь.

Создаем репозиторий на GitHub

/Sites/hello/.gitignore, чем затем удалять в ручную лишнее. Хотя оба варианта допустимы.
Я использую приложение GitHub Mac OS X(https://mac.github.com/), хотя вы также можете воспользоваться командной строкой для инициализации репозитория. Например так(замените «youraccount» вашим именем на GitHub:

От переводчика. Я в качестве репозитория предпочитаю использовать Bitbucket, так как он позволяет иметь приватные репозитории бесплатно.
Конфигурируем Apache на сервере
Если у вас до сих пор не сконфигурирован сервер, рекомендую посмотреть на инструкцию по конфигурации сервера на Ubuntu (http://jeffreifman.com/digitalocean). Если у вас есть IP адрес, сконфигурируйте DNS вашего сервера:

Теперь войдите удаленно по ssh на ваш сервер при помощи IP или доменного имени

Обновите кофигурацию, установите Git, включите mod_rewrite для Apache и mcrypt для PHP.

Настройка доступа удаленного сервера к GitHub
Теперь мы настроим pull запросы с GitHub. Вначале установите Git

Теперь мы создадим группу для www, добавим данные и GitHub пользователей и настроим их права:

Теперь создадим ключ для синхронизации с репозиторием:

Вы увидите нечто похожее на это, вам необходимо скопировать и вставить этот ключ на GitHub
(если возникле проблемы посмотрите здесь (https://help.github.com/articles/error-permission-denied-publickey/)):
php yii2 для начинающих. Смотреть фото php yii2 для начинающих. Смотреть картинку php yii2 для начинающих. Картинка про php yii2 для начинающих. Фото php yii2 для начинающих
Зайдите в раздел настроек репозитория и добавьте этот ключ:
php yii2 для начинающих. Смотреть фото php yii2 для начинающих. Смотреть картинку php yii2 для начинающих. Картинка про php yii2 для начинающих. Фото php yii2 для начинающих
Затем вы увидите что-то подобное:
php yii2 для начинающих. Смотреть фото php yii2 для начинающих. Смотреть картинку php yii2 для начинающих. Картинка про php yii2 для начинающих. Фото php yii2 для начинающих
Наконец-то вы сможете склонировать ветку на ваш сервер:

Если все правильно сконфигурированно то вы увидите:
php yii2 для начинающих. Смотреть фото php yii2 для начинающих. Смотреть картинку php yii2 для начинающих. Картинка про php yii2 для начинающих. Фото php yii2 для начинающих
По мере увеличения количества кода вы через репозиторий сможете легко синхронизировать код локальной машины и продакшн-сервера. Это гораздо проще чем синхронизировать архивом или вручную, вы убедитесь в этом сами в процессе дальнейшего обучения.
Создание конфигурации сайта для Apache
Создадим конфигурационный файл:

Измените доменное имя на ваше:

Убедитесь в том что ваше приложение работает пройдя по ссылке yourdomain.com/site/say?target=World! (Отладочный тулбар фреймворка внизу страницы будет отключен!)
php yii2 для начинающих. Смотреть фото php yii2 для начинающих. Смотреть картинку php yii2 для начинающих. Картинка про php yii2 для начинающих. Фото php yii2 для начинающих
Поздравляю! Теперь мы готовы приступить к изучению более сложных особенностей фреймворка!

Источник

Введение в YII 2

Как обычно в последнее время, оставлю здесь доклад своего товарища о YII 2. Вторая версия фреймворка YII 2 набирает обороты и становится все более и более популярнее и чуть ниже я напишу, что нам нужно для того, чтобы начать делать проекты с этой системой.

Итак, чтобы начать делать сайты на YII 2, нам понадобятся: Веб-сервер, PHP версии 5.4 или выше, Git, Composer, знание ООП и уровень интеллекта выше 103. Надо сказать, это будет не так уж и сложно, но и не просто. Эта статья поможет стартануть проект на YII 2 самому дну веб-разработки: «школьникам» и старперам — адептам CodeIgniter. Другие статьи в Интернете либо еще не созданы (стабильной версии YII 2 еще нет), либо написаны для тех, кто уже создал тысячу YII 1 и сотню YII 2 сайтов. Я не такой и статью я буду писать не такую, а простую и понятную, ведь эта статья — мой конспект, который я вел во время изучения фреймворка YII 2.

Шаг 1. Введение.

Короткие определения и пояснения перед тем, как идти дальше:

1) Composer. Эта программа обработает составленный нами composer.json, создаст папку vendor и закачает туда через Git последнюю версию YII 2 и все другие «пакеты», от которых зависит фреймворк. Подробнее. Сразу предупрежу, в Windows можно столкнуться с кучей проблем при установке.

2) PSR-4. Разработчики постоянно холиварят, сколько пробелов должен быть таб, как называть переменные и т.д. Сейчас тренд такой, что таб — это 4 пробела, а в качестве стандарта хранения и загрузки классов используется PSR-4. Именно в стандарте PSR-4 Composer компонует скачанные файлы:

После обработки composer.json, YII2 лежит в

Туда попадает содержимое папки framework из Гитхаба YII2.
Вообще, кто не в теме, советую почитать про PSR. Если вы плохой парень, можно называть свой_методы_вот_так, но будьте готовы, что вскоре все это неприятно запахнет, вам таки придется подчиниться YII и родить метод getYourMethod — ад перфекциониста.

3) Namespace. Пространства имен были введены в PHP 5.3. Для понимания всей кухни, откройте vendor/yiisoft/yii2/classes.php. Здесь перечислены классы, подгружаемые YII2. Главный класс для веб-приложений находится в web/application.php. Как видим, его namespace — yii\web. Что это значит? Да пока ничего, просто данный класс можно вызвать вот так:

$application = new \yii\web\Application;

А если потом в системе появится другой class Application, его мы вызовем через его уникальный неймспейс, вот так:

$application2 = new \vasya\megasoft\Application;

До PHP 5.3 в одном приложении нельзя было использовать два класса с одинаковым названием.

Все классы classes.php разделены по неймспейсам \yii\**\**, это создает абстрактную структуру фреймворка. Наше приложение мы точно также раскидаем по собственным неймспейсам и YII сможет по ним ориентироваться в нашей структуре.

4) MVC. Ничего лучше схемы MVC (модель-вид-контроллер) пока не было изобретено, почти все популярные фреймворки работают по этой схеме. Это значит, что любой запрос пользователя проходит через (обязательно) Контроллер и (возможно) Модель и (возможно) Вью. Это очень удобно, практично и красиво, следование этой цепочке позволит проекту держаться в собранном состоянии — ничего ни от куда не будет торчать (с ужасом вспомните ваш первый проект не на MVC).

Вот три класса YII2, расширяющие пользовательские классы контроллера и модели, а также файлы шаблона:

5) CRUD. Create, Read, Update, Delete. Почти все веб-приложения построены на этих четырех буквах. Мы создаем, читаем, обновляем, удаляем данные в базе данных.

Шаг 2. Установка.

В корне проекта создадим composer.json с заполненной секцией require:

Когда выйдет стабильная версия YII2, в первой строчке (minimum-stability) необходимость отпадет. Теперь передадим этот файл в Composer. В Linux надо в папке с проектом выполнить composer install. В Windows советую при установке выбрать галочку «внедриться в проводник» и устанавливать пакеты через правую кнопку мыши (ПКМ по папке с composer.json).

Если все ОК, создастся папка vendor, в которую будет помещен YII2 и все нужные пакеты. В папке также будет лежать autoload.php, который загрузит все нужные классы.

В дальнейшем нам понадобятся еще некоторые пакеты — например, дебаговая панель и генератор кода. Сразу добавим все перечисленное в require:

И выполним обновление: composer update.

После обучения мы будем клепать сайты на основе уже готовых каркасов. См. тут, как установить базовый или расширенный каркас YII2 сайта через Composer, вместе с самим YII.

Шаг 3. Конфигурация.

Следующий шаг после установки — конфигурация. Наше будущее приложение будет максимально походить на CodeIgniter по структуре. Но вообще, в YII2 можно (но лучше не надо) мутить с папками и неймспейсами что угодно.

Создаем папку application и в ней стандартный набор других папок: config, controllers, models, views, components, runtime (сюда YII будет записывать системные логи).

index.php выглядит так, он просто получает конфиг и передает его в \yii\web\Application:

Вот на данном этапе важно понимать, что мы вообще делаем. yii\web\Application — это обычный класс, как и все остальное в YII. Каждый класс хорошо документирован. Например, вот документация на этот, в ней описано каждое свойство и метод. После конфигурации свойства будут заполнены нужными нам данными.

Минимальный application/config/config.php для приложения, работающего с базой:

Данный конфиг загрузит один компонент — класс работы с БД. И, если в index.php продефайнена константа разработки, пару модулей для всеми уважаемого разработчика.

Теперь проверим, все ли работает. Создаем в корне проекта папку assets с «хоршими» правами, вызываем модуль генератора кода site.loc/?r=gii. Попутно ценим дебаговую панель снизу. Сказка.

Шаг 4. Контроллер.

Контроллер — класс, содержаший экшены, обрабатывающие запросы пользователя. Каждый экшен — это некая кнопка на общей панели. Нажимаем на кнопку — получаем результат.

Контроллер по умолчанию в YII2 — SiteController, он должен лежать в неймспейсе app\controllers (неймспейс можно изменить, задав в конфиге ключ controllerNamespace). Экшен по умолчанию — Index. Создаем application/controllers/SiteController.php. Помните про PSR? Так вот, классы рекомендуется называть с большой буквы, как и файлы, содержащие класс. А методы — с маленькой буквы.

Все, дальше мы можем подгрузить нашу модель в контроллере (use app\models), создать сколько угодно экземпляров с разными именами и учредителями, как угодно крутить-вертеть этими ООО в контроллере и вьюхах.

Тут надо помнить, что ООО — это не только информация, но и различные действия. Например, слияния. Мы можем создать в модели метод merge, который будет делать нужные манипуляции, и передавать туда объект для слияния.

С помощью моделей можно описать всю жизнь. Чем нам в этом поможет YII2? Прежде всего — класс \yii\db\ActiveRecord (советую внимательно изучить), там куча всего, что поможет связать нашу модель данных с таблицами MySQL. Наследуем его и используем.

Кстати, важно понимать, что ActiveRecord тянет за собой наследование yii\base\Model, изучив этот класс, вы поймете, что является моделью в YII. Это правила валидации отправленных пользователем данных, это «атрибуты», это «поведения», это магические сеттеры и геттеры, которые взаимодействуют с созданным вами классом модели.

В базе данных будет три таблицы:

CREATE TABLE IF NOT EXISTS `founders` (`id` int(11) NOT NULL, `name` varchar(255) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3; INSERT INTO `founders` (`id`, `name`) VALUES(1, ‘Vasya’),(2, ‘Petya’); CREATE TABLE IF NOT EXISTS `founders_to_ooo` (`founder_id` int(11) NOT NULL,`ooo_id` int(11) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE `founders` ADD PRIMARY KEY (`id`); INSERT INTO `founders_to_ooo` (`founder_id`, `ooo_id`) VALUES(1, 1),(2, 1); CREATE TABLE IF NOT EXISTS `ooo` (`id` int(11) NOT NULL,`name` varchar(255) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2; ALTER TABLE `ooo` ADD PRIMARY KEY (`id`); INSERT INTO `ooo` (`id`, `name`) VALUES(1, ‘Test1’);

Основная — ooo. В founders будут храниться учредители. founders_to_ooo — связующая таблица, привязывающая сколько угодно учредителей к одной записи в таблице ooo.

Для учредителей мы создаем отдельную модель Founder.

‘Идентификатор’, ‘name’ => ‘Имя’ ]; > >

Далее, в контроллере добавляем use app\models\OOO; и выводим инфу о ООО с >

А вот так можно (нужно) использовать метод yii\base\model\load() в комбинации с yii\db\ActiveRecord\save() для загрузки данных в модель и сохранения данных в БД:

YII в load проверит всю валидацию, описанную в rules модели, и только если данные корректны, выполнит save(), если данные некорректны — во вьюхе будет выведена нужная ошибка рядом с полем. Разумеется, если мы вставляем данные в базу через АПИ YII, мы обезопасим себя от любого рода инъекций.

Шаг 6. Вью.

Это шаблон сайта. Контроллер возвращает результат рендеринга шаблона с переданными переменными

и этот результат выводится в браузер. В YII2 шаблон делится на два типа: слой и вью. Слои хранятся в views/layouts, вью — в views/<НазваниеКонтроллера>. Создаем папки /application/views/layouts/ и /application/views/site/

Создаем слой main.php (это слой по умолчанию). Примерно так выглядит слой YII2.

Хелпер html будет использован почти во всех вьюхах, изучите документацию по нему.

ОООшки

$model передается вью через экшен контроллера.

Шаг 6. Виджеты.

Основная цель фреймворка — ускорить процесс создания проекта. Чем меньше кода, тем лучше. А лучше короткого кода может быть только уже существующий код. Виджет — уже существующий код. Пример такого виджета — GridView, который выведет таблицу данных с возможностью сортировать по каждой колонке.

Видоизменяем нашу вью:

Создаем модель OOOSearch

Вот теперь получаем результат — табличку с пагинацией и возможностью фильтровать и сортировать содержимое. Побочный эффект от копирования и подгонки под себя готового кода — это довольно-таки нудное занятие. Благо, есть генератор кода CRUD (/?r=gii), с помощью него мы можем (но не всегда) сгенерировать и поисковую модель, и вьюху с этим виджетом.

Отдельно стоит оставиться на виджете yii\widgets\ActiveForm. С помощью него создаются все формы на сайте. Данный виджет умеет выводить основные элементы формы и возьмет на себя функцию валидации данных перед отправкой на сервер. В целом — он крайне прост. Выводим форму и один инпут, передаем инпуту модель с rules, чтобы виджет знал, что должно быть введено в каждое поле:

Повторюсь, в идеале всю эту гадость мы не будем писать, надо только освоить генератор кода, и вьюха будет сгенерирована на основе указанной таблицы.

Шаг 8. Поведения и события.

Тут я процитирую предложение этой статьи.

В Yii существует такая вещь как поведения (behaviors).

Добавлю лишь, что поведения привязываются к событиям (ивентам). А саму статью читать пока незачем, она понятна только тем, кто уже написал тысячи поведений YII в своей жизни.

Поведение — это написанный нами код, который выполняется в какой-то момент и изменяет\дополняет поведение приложения. Это аналог хуков в WordPress. Мы можем установить готовый WP плагин, который через хуки изменит функционал WP блога. Каждое поведение цепляется за «ивент» (событие) в каком-то классе YII2. Давайте зацепимся за класс контроллера yii\web\Controller, который наследуют все пользовательские контроллеры. Открываем документацию, перематываем до раздела Events. Ивента у данного объекта всего два, с говорящими названиями: EVENT_AFTER_ACTION и EVENT_BEFORE_ACTION. Зацепимся за первый — *ПОСЛЕ_ВЫПОЛНЕНИЯ_ЛЮБОГО_ЭКШЕНА* будем записывать в лог ИП адрес, время обращения, название класса и прочую инфу.

Как и все остальное в YII2, поведение является классом. Создаем класс application\components\Log.php в неймспейсе app\components

Теперь в любом контроллере добавляем наше поведение через объявление метода behaivors:

public function behaviors() < return [ 'notification' =>[ ‘class’ => ‘app\components\Log’, ‘custom_info’ => ‘Test’ ], ]; >

И еще про Ивенты. На любой ивент можно подписаться так:

Шаг 9. Модули.

Как говорится, в хорошем ООП коде нет проблем, которые нельзя было бы решить вводом нового уровня абстракции. Кроме одной — слишком большой уровень абстракции. Модуль — дополнительный уровень абстракции в приложении. Модуль — это пачка. Пачка MVC, содержащая свои контроллеры, модели и вьюхи, отгороженные от других контроллеров, моделей и вьюх. Какой-то программист когда-то захотел добавить новый раздел на сайт, посмотрел на помойку уже созданных контроллеров и пообещал, что создаст свои контроллеры с блекджеком и шлюхами. Ну и добавил поддержку модулей в YII.

Модули приложения перечисляются в конфигурации:

‘bootstrap’ => [‘ooo’], ‘modules’ => [ ‘ooo’ => [ ‘class’ => ‘application/modules/OOO’ ], //. ],

Именно «модуль» представляет из себя генератор кода gii, который мы подключили изначально. Чтобы понять, что к чему, открываем vendor/yiisoft/yii2, видим класс модуля Module.php, папку controllers и views. Можно догадаться, что по тому же принципу мы смогли бы создать свой модуль OOO и использовать его на любом сайте через вызов /?r=ooo

Читаем эту статью. Там все приложение построено на модулях. Оно сложное, я сам сейчас копаюсь там.

Шаг 10. Послесловие.

Тут лишь хочу описать свои ошущения от YII2 во время первого знакомства. До этого я пилил сайты на CodeIgniter и сделал свои тулзы для генерации кода, для автоматической валидации форм и т.д. Сейчас я вижу все это в YII2, но тут это реализовано действительно круто и универсально. Вот и все ощущения. Буду дальше изучать YII, осталось еще куча всего интересного.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *