Полное руководство по yii2

Введение

Первое знакомство

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

Обработка запросов

Основные понятия

Работа с базами данных

Получение данных от пользователя

Отображение данных

Безопасность

Кеширование

Веб-сервисы REST

Инструменты разработчика

Тестирование

Специальные темы

Виджеты

Хелперы

Информация о материале
Родительская категория: Полное руководство по Yii 2.0
Категория: Хелперы

Хелперы Yii 2

Yii 2: Хелперы

Все helper классы Yii организованны в рамках пространства имен yii helpers и являются статическими методами это означает, что они содержат в себе только статику

Содержание

Читать

Информация о материале
Родительская категория: Полное руководство по Yii 2.0
Категория: Структура приложения

Ресурсы в Yii 2

Ресурсы в Yii 2

Ресурс в Yii это файл который может быть задан в Web странице: CSS файл, JavaScript файл, изображение или видео файл… Ресурсы располагаются в открытом доступе

Содержание

Читать

Информация о материале
Родительская категория: Полное руководство по Yii 2.0
Категория: Структура приложения

Фильтры Yii 2

Фильтры Yii 2

Фильтры в Yii 2 — это объекты, которые могут запускаться как перед так и после действий контроллера. Фильтр может состоять из пре-фильтра (фильтрующая логика).

Содержание

Читать

Информация о материале
Родительская категория: Полное руководство по Yii 2.0
Категория: Специальные темы

Интернационализация Yii 2

Интернационализация Yii 2

Интернационализация (I18N) в Yii 2 является частью процесса разработки приложения, которое может быть адаптировано для нескольких языков без изменения программн

Содержание

Читать

Информация о материале
Родительская категория: Полное руководство по Yii 2.0
Категория: Специальные темы

Консольные команды Yii 2

Консольные команды Yii 2

В Yii есть полноценная поддержка консольных приложений, которые обычно используются для создания фоновых и служебных задач, поддерживающих сайт.

Содержание

Читать

Информация о материале
Родительская категория: Полное руководство по Yii 2.0
Категория: Отображение данных

Темизация в Yii 2

Темизация в Yii 2

Темизация — это способ заменить один набор представлений другим без переписывания кода, что замечательно подходит для изменения внешнего вида приложения.

Содержание

Читать

Информация о материале
Родительская категория: Полное руководство по Yii 2.0
Категория: Структура приложения

Виджеты Yii 2

Виджеты Yii 2

Виджеты в Yii 2 представляют собой многоразовые строительные блоки, используемые в представлениях для создания сложных и настраиваемых элементов пользовательского интерфейса в рамках объектно-ориентированного подхода.

Содержание

Читать

Информация о материале
Родительская категория: Полное руководство по Yii 2.0
Категория: Структура приложения

Контроллеры Yii 2

Контроллеры Yii 2

Контроллеры Yii 2 являются частью MVC архитектуры. Это объекты классов, унаследованных от yii base Controller, отвечающие за обработку запроса и генерирование ответа.

Содержание

Читать

Информация о материале
Родительская категория: Полное руководство по Yii 2.0
Категория: Структура приложения

Модели Yii 2

Модели Yii 2

Модели являются частью архитектуры MVC (Модель-Вид-Контроллер). Они представляют собой объекты бизнес данных, правил и логики.

Содержание

Читать

Название книги: Полное руководство по Yii 2.0
Год: 2014
Страниц: 577
Язык: Русский 
Формат: pdf, fb2, epub, mobi
Размер: 2,7 MB, 3 MB, 1 MB, 2 MB

Yii – это высокопроизводительный компонентный PHP фреймворк, предназначенный для быстрой разработки современных веб-приложений. Слово Yii (произносится как Йи [ji:]) в китайском языке означает «простой и
эволюционирующий». Также Yii может расшифровываться как акроним
Yes It Is!

В руководстве вы познакомитесь с данным фреймворком, освоите основные понятия и научитесь работать с ним. 

Оглавление:

  1. Введение
  2. Первое знакомство
  3. Структура приложения
  4. Обработка запросов
  5. Основные понятия
  6. Работа с базами данных
  7. Получение данных от пользователя
  8. Отображение данных
  9. Безопасность
  10. Кеширование
  11. Веб-сервисы REST
  12. Инструменты разработчика
  13. Тестирование
  14. Специальные темы
  15. Виджеты
  16. Хелперы

Скачать “Полное руководство по Yii 2.0”:

Читать книгу «Полное руководство по Yii 2.0» онлайн



Время на прочтение
7 мин

Количество просмотров 91K

image
От переводчика.
Жизнь такая штука, как-то я начинал цикл статей по Java Spring и сообщество сообщило, что выбор пал не на самую свежую информацию. Сейчас жизнь забросила меня в хардкорное программирование на С++, а душа все равно нуждается в вебе, поэтому в свободное время решил изучить вместе с вами технологии, которые может скушать любой хостинг и в то же время сложность разрабатываемых приложений и ООП не сильно пострадает от PHP.
Исходный текст статьи на английском вы найдете по адресу http://code.tutsplus.com/tutorials/programming-with-yii2-getting-started—cms-22440
Перевод не претендует на дословность, но о грубых ошибках, если такие имеются – прошу сообщать в комментариях.

Если вы спрашиваете «что такое YII?», прочтите более ранний урок «Введение в фреймворк YII», который описывает преимущества YII, а также затрагивает вопрос новшеств второй версии фреймворка от 12 октября 2014.
Этот урок посвящен установке YII2, настройке вашего окружения, написанию классического приложения «Привет, мир!», настройке удаленного окружения для хостинга и деплоя с GitHub.

Установка YII2

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

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

Установка Composer

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

curl -s http://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Установка YII2

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

cd ~/Sites
composer global require "fxp/composer-asset-plugin:1.0.0-beta2"
composer create-project --prefer-dist yiisoft/yii2-app-basic hello

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

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

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

cd /Applications/MAMP/htdocs
ln -s ~/Sites/hello/ /Applications/MAMP/htdocs/hello

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

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

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

<?php
 
// comment out the following two lines when deployed to production
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
 
require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
 
$config = require(__DIR__ . '/../config/web.php');
 
(new yiiwebApplication($config))->run();

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

public function actionIndex()
    {
        return $this->render('index');
    }

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

<div class="container">
            <?= Breadcrumbs::widget([
                'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
            ]) ?>
            <?= $content ?>
</div>

Переменная $content будет заменена кодом сгенерированным в /views/site/index.php, который представляет статичную html страницу.

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

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

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

'components' => [
//...
  'urlManager' => [
          'showScriptName' => false,
          'enablePrettyUrl' => true
                  ],    
//...
'request' => [

Затем необходимо создать в директории /web, где хранится наш index.php, файл .htaccsess, со следующим содержимым:

RewriteEngine on
 
# If a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward it to index.php
RewriteRule . index.php

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

Создаем экшн

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

public function actionSay($target = 'World')
{
    return $this->render('say', ['target' => $target]);
}

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

<?php
use yiihelpersHtml;
?>
<h1>Hello <?= Html::encode($target) ?></h1>
<p>Welcome to your Yii2 demonstration application.</p>

Этот шаблон выведет строку «Hello +$(target)», где $(target) — переменная переданная в url. Для обеспечения безопасности она попадает не на прямую в строку, а в начале проверяется на вредоносный код.
Если вы теперь посетите localhost:8888/hello/web/site/say?target=Tuts%20Readers, то увидите следующее:
image
Это простой пример реализации MVC модели фреймворка. Более детально вы можете ознакомиться с данным примером на сайте фреймворка в официальной документации.
А теперь давайте зальем наше приложение на GitHub и запустим на продакшн-сервере.

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

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

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

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

cd ~/Sites/hello
git init
git commit -m "first commit of hello world for yii2"
git remote add origin git@github.com:youraccount/hello.git
git push -u origin master

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

yourdomain.com A 192.161.234.17

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

ssh root@yourserver.com

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

sudo apt-get update
sudo apt-get upgrade
sudo a2enmod rewrite
php5enmod mcrypt

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

sudo apt-get install git

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

adduser github
addgroup www 
adduser github www
adduser www-data www
chown -R :www /var/www
chmod +s -R /var/www
chmod -vR g+w /var/www/

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

su github
ssh-keygen -t rsa -C "yourgithubaccount@youremail.com"
exit
cat /home/github/.ssh/id_rsa.pub

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

git clone git@github.com:youraccount/hello.git /var/www/hello

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

nano /etc/apache2/sites-available/hello.conf

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

<VirtualHost *:80>
 ServerName yourdomain.com
# Set document root to be "basic/web"
DocumentRoot "/var/www/hello/web"
<Directory "/var/www/hello/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 . index.php
</Directory>
</VirtualHost>

Включите ваш сайт:

a2ensite hello.conf
a2dissite 000-default.conf 
service apache2 reload

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

Примечание: Данная глава находится в разработке.

Этот шаблон предназначен для крупных проектов разрабатываемых в командах где администраторская часть (backend) отделена
от приложения пользователя (frontend), приложения располагаются на нескольких серверах и т.д. Этот шаблон приложения включает
значительное количество возможностей, таких как начальная схема базы данных, регистрация пользователя и восстановление его
пароля.

Установка

Установка при помощи Composer

Если у вас ещё не установлен Composer, следуйте инструкциям в разделе
установка Yii.

Если Composer установлен, вы можете установить приложение используя следующие команды:

composer global require "fxp/composer-asset-plugin:~1.0.0"
composer create-project --prefer-dist yiisoft/yii2-app-advanced yii-application

Первая команда установит плагин composer asset plugin,
который позволит работать с пакетами bower и npm через Composer. Эту команду необходимо выполнить единожды. Вторая команда
установит приложение advanced в директорию yii-application. Вы можете выбрать другое имя директория если пожелаете.

Начало работы

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

  1. Выполните команду init и выберите окружение dev.

    php /path/to/yii-application/init

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

    php /path/to/yii-application/init --env=Production overwrite=All

  2. Создайте новую базу данных и внесите соответствующие изменения в секцию components.db файла common/config/main-local.php.

  3. Примените миграции при помощи консольной команды yii migrate.
  4. Настройте на вебсервере URL и корневые директории:

  5. для приложения frontend директория /path/to/yii-application/frontend/web/ и URL http://yourdomain/frontend/

  6. для приложения backend директория /path/to/yii-application/backend/web/ и URL http://yourdomain/backend/

Структура директорий

Корневая директория содержит следующие поддиректории:

  • backend — веб приложение администраторской части.
  • common — общие файлы для всех приложений.
  • console — приложение для консоли.
  • environments — настройки для различных окружений.
  • frontend — веб приложение пользователя.

Корневая директория содержит следующие файлы:

  • .gitignore содержит список директорий игнорируемых системой контроля версий git. Если вам необходимо предотвратить
    их попадание в репозиторий, перечислите их в данном файле.
  • composer.json — Конфигурация Composer, подробно описанная в разделе «Настройка Composer» ниже.
  • init — скрипт инициализации. Подробно описан ниже в разделе «Конфигурации и окружения».
  • init.bat — он же для Windows.
  • LICENSE.md — информация о лицензии. Разместите в нём лицензию вашего проекта. Особенно в случае OpenSource.
  • README.md — основная информация об установки шаблона. Можете разместить в нём информацию о вашем проекте и его установке.
  • requirements.php — проверка соответствия требованиям Yii.
  • yii — входной скрипт консольного приложения.
  • yii.bat — он же для Windows.

Встроенные псевдонимы путей

  • @yii — директория фрэймворка.
  • @app — корневая директория выполняемого в данный момент приложения.
  • @common — директория common.
  • @frontend — директория веб-приложения frontend.
  • @backend — директория веб-приложения backend.
  • @console — директория console.
  • @runtime — директория runtime исполняемого приложения.
  • @vendor — директория vendor, содержащая пакеты загруженные Composer’ом.
  • @bower — директория vendor, содержащая пакеты bower.
  • @npm — директория vendor, содержащая пакеты npm.
  • @web — базовый URL исполняемого веб-приложения.
  • @webroot — корневая веб-директория исполняемого веб-приложения.

Псевдонимы, характерные для структуры директорий приложения advanced (@common, @frontend, @backend и @console)
задаются в common/config/bootstrap.php.

Приложения

В шаблоне advanced три приложения: frontend, backend и console. Frontend это та часть приложения, которая обеспечивает
взаимодействие системы с конечным пользователем проекта. Backend это административная панель, аналитика и прочая подобная
функциональность. Console обычно используется для выполнения заданий по расписанию через cron, низкоуровневого
управления сервером, при развёртывании приложения, работы с миграциями и ресурсами.

Также есть директория common, которая содержит файлы используемые более чем одним приложением. Например, модель User.
Оба веб приложения frontend и backend содержат директорию web. Это корневая директория, которую вы должны настроить
в вебсервере.

У каждого приложения есть собственное пространство имён и соответствующий его названию псевдоним. Это же справедливо и для
общей директории common.

Конфигурации и окружения

Существует множество проблем при типичном подходе к настройке конфигурации:

  • Каждый член команды имеет свою собственную конфигурацию. Изменение конфигурации в общем репозитории повлияет на всех
    остальных.
  • Пароль от эксплуатационной БД и API ключи не должны оказаться в репозитории.
  • Существует много окружений: development (разработка), testing (тестирование), production (эксплуатация). Каждое окружение
    должно иметь свою собственную конфигурацию.
  • Настройка всех параметров конфигурации для каждого случая однотипна и отнимает слишком много времени.

Для решения этих проблем Yii вводит простую концепцию окружений. Каждое окружение представлено набором файлов в
директории environments. Для переключения между окружениями используется команда init. Она довольно проста. Всё,
что она на самом деле делает — это копирование всех файлов из директории окружения в корневую директорию, где находятся
все приложения.

Обычно окружение содержит входные скрипты приложения, такие как index.php, и файлы конфигурации, имена которых
дополнены суфиксами -local.php. Эти файлы добавлены в .gitignore и никогда не попадут в репозиторий.

Чтобы избежать дублирования, конфигурации перекрывают друг друга. Например, приложение frontend считывает конфигурацию
в следующем порядке:

  • common/config/main.php
  • common/config/main-local.php
  • frontend/config/main.php
  • frontend/config/main-local.php

Параметры считываются в следующем порядке:

  • common/config/params.php
  • common/config/params-local.php
  • frontend/config/params.php
  • frontend/config/params-local.php

Значения из следующего конфигурационного файла перекрывают аналогичные значения из предыдущих конфигурационных файлов.

Полная схема:

Конфигурации приложения advanced

Настройка Composer

После того как шаблон приложения установлен, хорошо бы изменить composer.json который находится в корневой директории
проекта:

{
    "name": "yiisoft/yii2-app-advanced",
    "description": "Yii 2 Advanced Application Template",
    "keywords": ["yii2", "framework", "advanced", "application template"],
    "homepage": "http://www.yiiframework.com/",
    "type": "project",
    "license": "BSD-3-Clause",
    "support": {
        "issues": "https://github.com/yiisoft/yii2/issues?state=open",
        "forum": "http://www.yiiframework.com/forum/",
        "wiki": "http://www.yiiframework.com/wiki/",
        "irc": "irc://irc.freenode.net/yii",
        "source": "https://github.com/yiisoft/yii2"
    },
    "minimum-stability": "dev",
    "require": {
        "php": ">=5.4.0",
        "yiisoft/yii2": "*",
        "yiisoft/yii2-bootstrap": "*",
        "yiisoft/yii2-swiftmailer": "*"
    },
    "require-dev": {
        "yiisoft/yii2-codeception": "*",
        "yiisoft/yii2-debug": "*",
        "yiisoft/yii2-gii": "*",
        "yiisoft/yii2-faker": "*"
    },
    "config": {
        "process-timeout": 1800
    },
    "extra": {
        "asset-installer-paths": {
            "npm-asset-library": "vendor/npm",
            "bower-asset-library": "vendor/bower"
        }
    }
}

Во-первых, мы обновляем основную информацию. Меняем значения name, description, keywords, homepage и support
на соответствующие вашему проекту.

А сейчас интересная часть. вы можете добавить больше пакетов, необходимых для вашего приложения, в раздел require.
Все они с packagist.org. Стоит его изучить так как там множество пакетов с полезным кодом.

После того как ваш composer.json настроен, вы можете выполнить в консоли команду composer update --prefer-dist,
подождать пока требуемые пакеты загрузятся и установятся, и начать их использовать. Автозагрузка классов этих пакетов
будет осуществляться автоматически.

Создание ссылок на frontend из backend

Часто приходится создавать ссылки из приложения backend на приложение frontend. Так как frontend может использовать
собственную конфигурация менеджера URL, вам придётся продублировать её в конфигурации backend под новым именем:

return [
    'components' => [
        'urlManager' => [
            // конфигурация основного менеджера URL в конфигурации backend
        ],
        'urlManagerFrontend' => [
            // конфигурация менеджера URL из frontend
        ],

    ],
];

После того, как это будет сделано, вы сможете получить URL, указывающий на frontend, следующим способом:

echo Yii::$app->urlManagerFrontend->createUrl(...);

Если вы задаетесь вопросом: «что такое Yii?» посмотрите мой прошлый туториал Введение в Yii фреймворк, который объясняет преймущества Yii и демонтсрирует новые возможности Yii 2.0 вышедшом в Октябре 12, 2014.

Данный туториал проведет вас через установку Yii 2.0, установку локального енвайромента разработчика, создание просто Хеллоу-Ворлд приложения, настройку вашего удаленного продакшен енвайромента для хостинга и деплоинг вашего кода из GitHub репозитория.

Установка Yii 2.0

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

Вы можете найти подробную инструкции об установке здесь; Я же помогу вам проти через основы установки енвайромента разработчика на Mac OS X. Yii 2.0 имеет свое Полное Руководство (PDF) и Референс Классов, которые объясняют каждую деталь Yii.

Установка Composer

Yii2 требует Composer, популярный менеджер зависимостей для PHP. Если у вас он не установлен, запустите следующие:

1
curl -s http://getcomposer.org/installer | php
2
mv composer.phar /usr/local/bin/composer

Установка Yii2

Дальше, используйте Composer, что-бы установить Yii2. Установка требует что-бы вы использовали свои собственные данные от GitHub аккаунта; Зарегистрируйтесь если у вас нету своего аккаунта.

Давайте назовем наш первый проект «hello»:

1
cd ~/Sites
2
composer global require "fxp/composer-asset-plugin:1.0.0-beta2" 
3
composer create-project --prefer-dist yiisoft/yii2-app-basic hello

Yii2 предоставляет два различных шаблона установки, в зависимости от приложения вы разрабатываете: «basic» и «advanced». Для данного туториала мы воспользуемся «basic» приложением, которое установлено по умолчанию. В расширенном шаблоне приложения предусмотрены точки доступа для фронтенда, бэкенда и консоли для более продвинутого веб-приложения, такого как блог WordPress, административная панель управления и задачи cron.

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

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

1
 cd /Applications/MAMP/htdocs
2
 ln -s ~/Sites/hello/ /Applications/MAMP/htdocs/hello

Затем посетите http://localhost:8888/hello/web. Вы должны увидеть шаблон основного приложения Yii2, работающий с Bootstrap 3.x.

Yii2 Newly Installed Basic Application TemplateYii2 Newly Installed Basic Application TemplateYii2 Newly Installed Basic Application Template

Эта страница, скорее всего, понравится разработчикам Yii 1.1, у которых не была предварительно настроенная поддержка последней версии Bootstrap.

Архитектура приложений Yii

Одной из наиболее важных особенностей Yii Framework является то, что он предоставляет Model View Controller для PHP. Это не только обеспечивает более структурированную среду программирования и более понятный код, но и упрощает ряд вещей, которые трудно сделать в PHP, например, безопасность и автоматическое создание кода. Это также делает наш код более легким для расширения и повторного использования.

В приложении Yii мы направляем весь трафик на один файл: /web/index.php. Этот встроенный файл загружает Yii, любые зависимости, а затем запускает ваше приложение.

1
<?php
2

3
// comment out the following two lines when deployed to production

4
defined('YII_DEBUG') or define('YII_DEBUG', true);
5
defined('YII_ENV') or define('YII_ENV', 'dev');
6

7
require(__DIR__ . '/../vendor/autoload.php');
8
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
9

10
$config = require(__DIR__ . '/../config/web.php');
11

12
(new yiiwebApplication($config))->run();

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

1
public function actionIndex()
2
    {
3
        return $this->render('index');
4
    }

Как правило, в контроллерах много методов, но с минимальным кодом, как указано выше. Контроллеры управляют доступом, используют модели и рендерят представления. Основная часть интеллекта должна быть встроена в ваши модели, а представления, как правило, должны производить относительно простые операции с шаблонами.

По умолчанию Yii будет отображать /views/layouts/main.php вокруг вашего индексного представления в /views/site/index.php. Макет main.php обеспечивает структуру HTML и CSS на странице, например. панели инструментов и области содержимого. Внутри main.php вы увидите краткий вывод контента:

1
<div class="container">
2
            <?= Breadcrumbs::widget([
3
                'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
4
            ]) ?>
5
            <?= $content ?>
6
        </div>

Эта переменная $content будет заменена сгенерированным кодом из /views/site/index.php, который в настоящее время является статическим кодом HTML, который генерирует Congratulations! страница, показанная выше.

Создаем Hello World!

Включение красивых URL-адресов

Во-первых, давайте включим красивые URL Yii2 с помощью mod_rewrite. На домашней странице Yii, если вы нажмете на кнопку About, URL-адрес будет похож на http://localhost:8888/hello/web/index.php?r=site%2Fabout. Мы хотели бы изменить это на http://localhost:8888/hello/web/site/about.

Подкаталог config включает конфигурацию среды для ваших веб-приложений и консольных приложений, а также будущие настройки базы данных. Измените /config/web.php, чтобы добавить urlManagement к текущему веб-приложению. Добавьте следующий раздел urlManager в массив компонентов:

1
    'components' => [
2
    //...

3
      'urlManager' => [
4
              'showScriptName' => false,
5
              'enablePrettyUrl' => true
6
                      ],    
7
    //...

8
    'request' => [

Затем создайте файл .htaccess в /web, где существует основной файл index.php:

1
RewriteEngine on
2

3
# If a directory or a file exists, use it directly

4
RewriteCond %{REQUEST_FILENAME} !-f
5
RewriteCond %{REQUEST_FILENAME} !-d
6
# Otherwise forward it to index.php

7
RewriteRule . index.php

Убедитесь, что mod_rewrite запущен локально на MAMP; если нет, ознакомьтесь с этим руководством на Stack Overflow.

В своем браузере посетите этот URL: http://localhost:8888/hello/web/site/about. Вы должны увидеть страницу Yii About и щелкнуть по другим параметрам меню, чтобы увидеть красивые URL-адреса.

Пишем экшен Hello World!

Затем добавим действие контроллера под названием Say, чтобы повторить целевое сообщение по нашему выбору. В /controllers/SiteController.php добавьте следующее действие:

1
public function actionSay($target = 'World')
2
{
3
    return $this->render('say', ['target' => $target]);
4
}
5
        

Это будет искать параметр URL, называемый target для вывода на экран. Если нет целевого параметра, он будет повторять World. В Yii действия определяются как метод с префиксом «action», за которым следует имя действия. В этом классе SiteController мы используем public action actionSay. Yii использует префикс «action» для того, чтобы отличать методы действий от других методов.

Поведение метода рендеринга по умолчанию будет искать файл во views/ControllerID/ViewName.php. Итак, внутри /views/site/, создайте файл представления say.php:

1
<?php
2
use yiihelpersHtml;
3
?>
4
<h1>Hello <?= Html::encode($target) ?></h1>
5
<p>Welcome to your Yii2 demonstration application.</p>

Это файл просмотра шаблонов, чтобы повторить статический HTML-тег h1 с Hello, за которым следует переменная target. Примечание. Мы экранируем переменную target для защиты аргумента параметра URL-адреса от вредоносного кода.

Если вы откроете URL-адрес, http://localhost:8888/hello/web/site/say?еarget=Tuts%20Readers, вы должны увидеть это:

Hello Tuts ReadersHello Tuts ReadersHello Tuts Readers

Это очень простой пример контроллера Yii2 Model View Controller. Вы можете прочитать более подробное описание демонстрации Hello World и Yii2 MVC здесь.

Теперь давайте настроим наше приложение на GitHub и развернем его на продакшен сервер.

Настройка среды удаленного хостинга

Базовое приложение Yii должно отлично работать с Apache или Nginx, я дам инструкции для Apache, а здесь вы можете найти инструкции для Nginx.

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

После того как я создал шаблон приложения Yii, я создаю репозиторий на Github:

Create a New Repository at GithubCreate a New Repository at GithubCreate a New Repository at Github

Примечание. Сначала немного проще копировать и вставлять Yii2 .gitignore из GitHub в локальный файл ~/Sites/hello/.gitignore, а не создавать сайт с ним удаленно и объединять его локально

Я использую приложение Mac OS X GitHub, но вы также можете использовать командную строку для инициализации репозитория. Ниже я следую инструкциям по добавлению существующего проекта из GitHub с помощью командной строки (замените «youraccount» на ваше имя учетной записи GitHub):

1
cd ~/Sites/hello
2
git init
3
git commit -m "first commit of hello world for yii2"
4
git remote add origin git@github.com:youraccount/hello.git
5
git push -u origin master

Настройка сайта Apache на вашем сервере

Если у вас еще нет сервера LAMP или облака, следуйте моим общим инструкциям по установке Ubuntu для начала работы. После того, как у вас есть свой IP-адрес, измените свои DNS-записи, чтобы иметь точку записи A на вашем сервере.

1
yourdomain.com A 192.161.234.17

Затем войдите на свой сервер через IP-адрес или доменное имя:

1
ssh root@yourserver.com

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

1
sudo apt-get update
2
sudo apt-get upgrade
3
sudo a2enmod rewrite
4
php5enmod mcrypt

Настройка доступа GitHub на удаленном сервере

Теперь мы настроим пользователя для получение кода из Github, который может обслуживаться Apache. Сначала установите git на свой сервер.

1
sudo apt-get install git

Затем мы создадим группу для www, добавим в нее www-data и пользователей GitHub и предоставим им право собственности на наши веб-каталоги.

1
adduser github
2
addgroup www 
3
adduser github www
4
adduser www-data www
5
chown -R :www /var/www
6
chmod +s -R /var/www
7
chmod -vR g+w /var/www/

Затем мы создаем ключ для пользователя, который мы совместно используем GitHub для синхронизации кода:

1
su github
2
ssh-keygen -t rsa -C "yourgithubaccount@youremail.com"
3
exit

4
cat /home/github/.ssh/id_rsa.pub

Вы увидите что-то вроде этого, что вам нужно скопировать и вставить в GitHub.com:

Your Github KeyYour Github KeyYour Github Key

Перейдите на страницу настроек вашего репозитория GitHub с ключами и добавьте этот ключ в свой репозиторий:

Как только вы добавите его, вы увидите его здесь:

Наконец, вы можете клонировать дерево на ваш производственный сервер:

1
git clone git@github.com:youraccount/hello.git /var/www/hello

Если вы правильно настроили GitHub, он должен выглядеть так (если нет, просмотрите это):

Git CloneGit CloneGit Clone

По мере расширения кодовой базы в этой серии уроков и пуша обновлений с вашего локального компьютера вы сможете синхронизировать их на удаленном сервере с помощью git pull. Это проще, чем вытащить tarball или синхронизирующий код вручную — и станет более полезным, поскольку эта серия руководств будет продолжена с более поздними модулями.

Создание конфигурации сайта Apache

Создайте файл конфигурации сайта Apache:

1
nano /etc/apache2/sites-available/hello.conf

Настройте эту конфигурацию для своего доменного имени:

1
<VirtualHost *:80>
2
 ServerName yourdomain.com
3
# Set document root to be "basic/web"

4
DocumentRoot "/var/www/hello/web"
5
<Directory "/var/www/hello/web">
6
    # use mod_rewrite for pretty URL support

7
    RewriteEngine on
8
    # If a directory or a file exists, use the request directly

9
    RewriteCond %{REQUEST_FILENAME} !-f
10
    RewriteCond %{REQUEST_FILENAME} !-d
11
    # Otherwise forward the request to index.php

12
    RewriteRule . index.php
13
</Directory>
14
</VirtualHost>

Включите свой сайт:

1
a2ensite hello.conf
2
a2dissite 000-default.conf 
3
service apache2 reload

Откройте страницу http://yourdomain.com/site/say?target=World! и вы должны увидеть свое приложение, работающее в вашем домене, без панели инструментов отладки Yii2 внизу:

Production Server Hello World ApplicationProduction Server Hello World ApplicationProduction Server Hello World Application

Поздравляем! Теперь мы готовы изучить более сложные функции в Yii2. Если вы хотите узнать, когда будет готов следующий учебник по Yii2, подпишитесь на @tutspluscode или @reifman в Twitter или просмотрите мою страницу автора. Моя страница автора будет включать все статьи из этой серии сразу же после их публикации.

Если у вас есть какие-либо вопросы или исправления в этом уроке, разместите их ниже в комментариях.

Ссылки по теме

  • Веб-сайт Yii Framework
  • Введение в Yii Framework (Tuts +)
  • Другие бесплатные примеры Yii.
  • Полезные PHP-скрипты на Envato Market

Самое полное и правильное руководство:

http://stuff.cebe.cc/yii2docs-ru/guide-README.html

Похоже, что это руководство делалось усилиями авторов сайта http://yiiframework.ru.

Русскоязычное руроводство на сайте https://yiiframework.com.ua:

https://yiiframework.com.ua/ru/doc/guide/2/

Еще одна копия руководства:

https://nix-tips.ru/yii2-api-guides/guide-ru-db-active-record.html#navigation-24168

Там же есть ссылка на русскоязычные статьи по Yii 2:

https://nix-tips.ru/tag/yii2

Еще нашлось странное русскоязычное рукводство на английском сайте:

http://yii2-framework.readthedocs.io/en/latest/guide-ru/README/

Для того, чтобы выбирать разделы, нужно сильно вниз прокрутить левую часть страницы до момента, где идут заголовки русских разделов.

Описание

Yii — это высокопроизводительный фреймворк, используемый для быстрой разработки веб-приложений на РНР. Он хорошо спроектирован, имеет прекрасную поддержку, его легко изучить и легко сопровождать. Эта книга на практических примерах покажет вам самые важные возможности Yii 2. Сквозь всю книгу проходит пример построения реального приложения — каждая глава представляет новую функциональность и показывает приёмы тонкой настройки. Вместо того, чтобы пытаться быть всеобъемлющим справочником по Yii 2, издание является руководством по тем сведениям, которые важно знать практикующему разработчику. Издание предназначено для веб-разработчиков как уже знакомых с Yii, так и начинающих пользователей фреймворка.

Схожие книги

Самоучитель PHP 4. Дмитрий Котеров

Самоучитель PHP 4. Дмитрий Котеров

PHP 5 Power Programming. Andi Gutmans, Stig Sæther Bakken and Derick Rethans

PHP 5 Power Programming. Andi Gutmans, Stig Sæther Bakken and Derick Rethans

Самоучитель PHP 5/6. М. Кузнецов, И. Симдянов

Самоучитель PHP 5/6. М. Кузнецов, И. Симдянов

Самоучитель РНР 7. М. В. Кузнецов, И. В. Симдянов

Самоучитель РНР 7. М. В. Кузнецов, И. В. Симдянов

Понравилась статья? Поделить с друзьями:

А вот и еще наши интересные статьи:

  • Дименгидринат инструкция по применению цена отзывы аналоги таблетки
  • Стиральная машина hotpoint ariston инструкция по стирке с вертикальной загрузкой
  • Вольтарен гель инструкция по применению детям можно ли использовать
  • Иринекс 70 мг цена инструкция по применению
  • Инструкция по применению аспирина в таблетках взрослым дозировка

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии