В своей первой статье о Yii я сделал лишь небольшой обзор, теперь давайте поговорим о Yii немного подробнее. Вот что будет описано в данной статье:

1. Yii Framework и документация к нему.
2. Обзор основных частей фреймворка и сайта на основе Yii.

При изучении этого фремворка я не нашел ни одного подробного пособия для тех людей, которые никогда не видели фреймворки и это очень печально для людей, начинающих их использовать. Очень и очень трудно понять что и как в них работает (пока я говорю только о Yii, т.к. с другими не знаком), сразу появляется множество вопросов без ответа: откуда берутся используемые переменные, то ли это стандартные переменные фреймворка, то ли программист их навыдумывал для примера, как передавать данные между формами, как работать с базой данных и т.д. Иногда опускаются руки глядя на все это, поэтому я постараюсь объяснять даже самые малейшие и «глупейшие» вещи, а некоторые вещи наоборот буду опускать, их вы поймете сами после изучения основ.

Yii Framework и документация к нему.

Кроме этих сайтов есть еще несколько хороших блогов по Yii, но пока я не рекомендовал бы вам знакомиться со всем сразу (в моем случае это только помешало процессу), а пока просто разобраться что и как работает. Представленные выше сайты вполне справятся с этой задачей.

Обзор основных частей фреймворка и сайта на основе Yii.

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

1. Скачайте дистрибутив (http://www.yiiframework.com/download/) и разархивируйте его. В этом архиве вы найдете три папки:

  • demos — примеры сайтов на yii;
  • framework — сам фреймворк;
  • requirements — проверка требований для работы с yii.

Из этих трех папок нам нужна только одна (framework), копируйте ее в корневую директорию вашего сайта. Я использую xampp (скачать можно тут http://www.apachefriends.org/en/xampp-windows.html), поэтому папку framework я скопировал вот сюда «C:\Program Files\xampp\htdocs\».

2. Сгенерируем свое первое приложение на yii, это можно сделать с помощью командной строки. Синтаксис команды будет таким:

«путь к php» «путь к файлу yiic.php» webapp «папка где должен лежать наш будущий сайт»

В моем случае эта команда выглядит вот так:

«C:\Program Files\xampp\php\php.exe» «C:\Program Files\xampp\htdocs\framework\yiic.php» webapp «C:\Program Files\xampp\htdocs».

После выполнения этой команды у вас спросят действительно ли вы хотите сделать это (yes/no), смело вводите yes и нажимайте enter. После это выведется множество пока непонятных путей и создастся ваше первое приложение на yii.

Теперь запускайте сервер и открывайте адрес вашего локального сайта, в моем случае «localhost», на экране должна появиться заготовка для ваших будущих творений «My Web Application». Созданный сайт пока умеет не много, но он может служить хорошей основой для сайтов.

Итак, мы развернули свое первое приложение на yii. Структура файлов будет вот такой:

  • assets — файлы ресурсов;
  • css — каскадные таблицы стилей;
  • framework — коды фреймворка yii;
  • image — изображения;
  • protected — функциональная часть сайта, ее мы и будем рассматривать;
  • themes — темы оформления yii;
  • index-test.php — тестовый входной файл, создан для проб различных функций;
  • index.php — входной скрипт любого проекта на yii, именно этот файл включает в работу наш фреймворк.

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

Идем дальше, рассмотрим папку protected, в ней содержится множество папок, но мы рассмотрим 4 из них, чтобы не забивать вам мозг лишней (пока лишней) информацией:

  • config (файл main.php) — через этот файл можно настроить под ваши нужды работу сайта, например подключить какие-нибудь модули наподобие ЧПУ, базу данных, GII (позже узнаете что это и как им пользоваться) и т.д.;
  • controllers (контроллеры) — это папка с классами, которые управляют логикой проекта;
  • models (модели) — это папка с моделями, которые определяют правила работы с базой данных (с информацией на сайте);
  • views (представления) — эта папка содержит файлы отображения данных конечному пользователю.

Как это все между собой связано и как это работает? Сейчас попробую объяснить, это главный момент, который следует понять. Схема работы yii такова: при заходе пользователя на сайт (заполнении формы, переходе на другую страницу сайта и т.д.) начинает работать контроллер (какой контроллер начинает работать зависит от действий пользователя), который в свою очередь начинает использовать модели (если нужно извлечь какие-нибудь данные из базы данных или наоборот записать туда) и представления (если пользователю необходимо отобразить результаты работы контроллера).

Вот что еще вам следует понять сразу: контроллеры состоят из событий (action), которые могут выполнять различные действия. Все эти события (action) начинаются со слова action и заканчиваются нашей приставкой, например Index. Давайте рассмотрим единственный контроллер в нашем тестовом сайте — SiteController, он состоит из вот таких событий (action):

  • actionIndex — событие запускается по умолчанию при первом обращении к контроллеру;
  • actionError — событие описывает работу сайта при появлении ошибки;
  • actionContact — событие описывает работу с контактной формой;
  • actionLogin — событие авторизации пользователя на сайте;
  • actionLogout — событие выхода пользователя из личного кабинета.

Когда пользователь нажимает на нашем тестовом сайте ссылку «Contact» активируется контроллер Site и действие «contact», причем обратите внимание на ссылку «http://localhost/index.php?r=site/contact». Остальные события вызываются точно также, к примеру мы хотим попасть на форму авторизации пользователя, для этого нам придется перейти по ссылке «http://localhost/index.php?r=site/login», т.е. в адресной строке мы указываем «index.php?r=контроллер/событие», теперь думаю немного понятнее. Посмотреть как устроено меню этого тестового сайта можно в файле main.php (views->layouts->main.php) — это папка с представлениями, ее мы рассмотрим чуть позже.

Давайте рассмотрим пример работы фреймворка немного посложнее, ситуация следующая: пользователь ищет в поиске сайта слово «book». Пользователь вводит в поисковую форму «book» и нажимает enter, сразу после этого начинает работать контроллер и событие, которые отвечает за поиск (например acitonFind). Этот контроллер вызывает модель book (которую должны создать мы сами вручную или при помощи gii — генератора кода) и осуществляет поиск по ней. Получив результаты поиска контроллер должен вызвать представления (которые мы должны создать сами, тоже вручную или при помощи gii), которые и выведут конечному пользователю результаты поиска.

Следует немного сказать о представлениях: они хранятся в папке views и каждое из них соответствует своему контроллеру (контроллер SiteController(controllers->SiteController) соответствует представление site(views->site)). Для ясности дела рассмотрим полный цикл работы yii и опять же возьмем для этого наш пробный сайт с одним контроллером Site. Итак пользователь нажал на ссылку «Contact» (http://localhost/index.php?r=site/contact) и контроллер siteController начал свою работу и вызвал событие «actionContact()», его код выглядит вот так:

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

Когда я писал эту статью для сайта и собирался записывать учебное видео для начинающих, мне на глаза случайно попался начальный курс по yii, вот ссылка на этот сайт akail.ru. В своем учебном видео я хотел сказать примерно тоже самое, поэтому свое обучающее видео записывать не стал. На этом пока все. Терпение и труд…

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