Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Yii

Програмирование с Yii2: Начало

by
Read Time:8 minsLanguages:
This post is part of a series called How to Program With Yii2.
How to Program With Yii2: Exploring MVC, Forms and Layouts

Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Если вы задаетесь вопросом: "что такое 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. Если у вас он не установлен, запустите следующие:

Установка Yii2

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

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

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

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

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

Затем посетите 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, любые зависимости, а затем запускает ваше приложение.

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

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

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

Эта переменная $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 в массив компонентов:

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

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

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

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

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

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

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

Это файл просмотра шаблонов, чтобы повторить статический 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):

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

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

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

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

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

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

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

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

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

Your Github KeyYour Github KeyYour Github Key

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

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

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

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

Git CloneGit CloneGit Clone

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

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

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

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

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

Откройте страницу 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 или просмотрите мою страницу автора. Моя страница автора будет включать все статьи из этой серии сразу же после их публикации.

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

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

Advertisement
Did you find this post useful?
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.