Создание сайтов на yii framework

Обновлено: 21.11.2024

Цян Сюэ начал работать над YII 1 января 2008 года. У него был опыт разработки фреймворков в PRADO, одном из самых известных фреймворков PHP.

Эксклюзивные функции Yii

  • Он включает шаблон проектирования MVC (модель-представление-контроллер).
  • Он поддерживает перевод сообщений, форматирование даты и времени, форматирование чисел и локализацию интерфейса. (Интернационализация и локализация (I18N и L10N)).
  • Возможность схемы многоуровневого кэширования. Он поддерживает кэширование данных, кэширование страниц, кэширование фрагментов и динамическое содержимое. Носитель кэширования можно изменить.
  • Умное управление обработкой запросов веб-службы.
  • Меры безопасности включают предотвращение межсайтового скриптинга (XSS), предотвращение подделки межсайтовых запросов (CSRF), предотвращение подделки файлов cookie и т. д.
  • Обработка ошибок и регистрация. Ошибки обрабатываются и представляются более красиво, а сообщения журнала можно классифицировать, фильтровать и направлять в разные места назначения.
  • Модульное и функциональное тестирование на основе PHP Unit и Selenium.
  • Код, сгенерированный компонентами YII и инструментами командной строки, соответствует стандарту XHTML.
  • Автоматическое создание кода для скелетного приложения, приложений CRUD и т. д.
  • Тщательно спроектирован для работы со сторонним кодом. Например, в приложении YII можно использовать код из PEAR или ZEND Framework.

Знание структуры каталогов YII

  • бэкэнд: серверное приложение, которое в основном используется администраторами сайта для управления всей системой.
  • Внешний интерфейс: внешнее приложение, которое предоставляет основные интерфейсы нашим целевым конечным пользователям.
  • консоль: консольное приложение, состоящее из консольных команд, необходимых системе.
  • Общий: каталог, содержимое которого является общим для вышеуказанных приложений.

Как мы видим, мы делим всю систему на три приложения: бэкенд, интерфейс и консоль. При необходимости мы можем добавить и другие приложения.

  • components: содержит компоненты (например, помощники, виджеты), которые используются только этим приложением.
  • config: содержит конфигурацию, используемую приложением.
  • controllers: содержит классы контроллеров
  • lib: содержит сторонние библиотеки, которые используются только этим приложением.
  • models: содержит классы моделей, специфичные для приложения.
  • среда выполнения: хранит динамически созданные файлы
  • представления: хранит скрипты представлений действий контроллера
  • www: корневой веб-сайт для этого приложения.

Веб-сайты, использующие YII

Плюсы и минусы Yii

Основной плюс YII в том, что сейчас есть много хороших вакансий, и он также используется в личном ИТ-бизнесе. Его активно используют очень крупные компании в России и Украине. Он простой и совместимый, имеет понятную документацию и множество расширений. Это хорошее сообщество, легкое для изучения и имеющее хорошую документацию.

С точки зрения архитектуры фреймворка и качества внутреннего кода YII не так уж и предпочтителен.

YII — это высокопроизводительная PHP-инфраструктура, которая лучше всего подходит для разработки приложений Web 2.0. Это может значительно сократить время разработки.

Чтобы получить начальный опыт работы с Yii, в этом разделе мы опишем, как создать наше первое приложение Yii. Мы будем использовать мощный инструмент yiic, который можно использовать для автоматизации создания кода для определенных задач. Для удобства мы предполагаем, что YiiRoot — это каталог, в котором установлен Yii, а WebRoot — это корневой каталог документов нашего веб-сервера.

Запустите yiic в командной строке следующим образом:

Примечание. При запуске yiic в Mac OS, Linux или Unix вам может потребоваться изменить права доступа к файлу yiic, чтобы он стал исполняемым. Кроме того, вы можете запустить инструмент следующим образом:

Это создаст скелет приложения Yii в каталоге WebRoot/testdrive. Приложение имеет структуру каталогов, необходимую большинству приложений Yii.

Не написав ни единой строки кода, мы можем протестировать наше первое приложение Yii, перейдя по следующему URL-адресу в веб-браузере:

Как мы видим, приложение имеет три страницы: домашнюю страницу, страницу контактов и страницу входа. На главной странице отображается некоторая информация о приложении, а также статус входа пользователя, на странице контактов отображается контактная форма, которую пользователи могут заполнить для отправки своих запросов, а страница входа позволяет пользователям пройти аутентификацию перед доступом к привилегированному содержимому. Дополнительные сведения см. на следующих снимках экрана.

Контактная страница с ошибками ввода

Контактная страница выполнена успешно

На следующей диаграмме показана структура каталогов нашего приложения. Подробное объяснение этой структуры см. в разделе «Условные обозначения».

1. Подключение к базе данных ¶

Большинство веб-приложений поддерживаются базами данных. Наше приложение для тест-драйва не является исключением. Чтобы использовать базу данных, нам сначала нужно сообщить приложению, как к ней подключиться. Это делается путем изменения файла конфигурации приложения WebRoot/testdrive/protected/config/main.php, как показано ниже:

Выше мы добавили запись db в component , которая указывает приложению подключаться к базе данных SQLite WebRoot/testdrive/protected/data/source.db при необходимости.

Примечание. Чтобы использовать функцию базы данных Yii, нам нужно включить расширение PHP PDO и расширение PDO для драйвера. Для тестового приложения нам потребуется включить расширения php_pdo и php_pdo_sqlite.

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

Примечание. Если вы используете базу данных MySQL, вы должны заменить AUTOINCREMENT на AUTO_INCREMENT в приведенном выше SQL.

Для простоты мы создаем в нашей базе данных только одну таблицу пользователей. Файл базы данных SQLite сохраняется как WebRoot/testdrive/protected/data/source.db. Обратите внимание, что и файл, и содержащий его каталог должны быть доступны для записи процессом веб-сервера, как того требует SQLite.

2. Реализация операций CRUD ¶

Теперь самое интересное. Мы хотели бы реализовать операции CRUD (создание, чтение, обновление и удаление) для только что созданной таблицы User. Это также часто требуется в практических приложениях.

Вместо того, чтобы утруждать себя написанием фактического кода, мы снова воспользуемся мощным инструментом yiic, который автоматически сгенерирует код для нас. Этот процесс также известен как скаффолдинг. Откройте окно командной строки и выполните перечисленные ниже команды,

В приведенном выше примере мы используем команду оболочки yiic для взаимодействия с нашим скелетным приложением. В командной строке мы выполняем две подкоманды: model User и crud User. Первый генерирует класс модели для таблицы User, а второй считывает модель User и генерирует код, реализующий операции CRUD.

Примечание. Вы можете столкнуться с такими ошибками, как ". не удалось найти драйвер", даже если средство проверки требований показывает, что вы уже включили PDO и соответствующий драйвер PDO. В этом случае вы можете попробовать запустить инструмент yiic следующим образом,

где path/to/php.ini представляет правильный файл ini PHP.

Давайте насладимся нашей работой, просмотрев следующий URL-адрес:

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

Нажмите ссылку "Новый пользователь" на странице. Мы попадем на страницу входа, если мы еще не вошли в систему. После входа в систему нам показывают форму ввода, которая позволяет нам добавить новую запись пользователя. Заполните форму и нажмите кнопку «Создать». Если есть какая-либо ошибка ввода, будет показано красивое сообщение об ошибке, которое не позволит нам сохранить ввод. Вернемся к списку пользователей. Мы должны увидеть нового добавленного пользователя в списке.

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

Если мы войдем в систему как администратор, используя admin/admin , мы сможем просмотреть страницу администрирования пользователя со следующим URL-адресом:

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

Все эти замечательные функции не требуют от нас написания ни одной строки кода!

Чтобы дать вам начальный опыт работы с Yii, в этом разделе мы опишем, как создать ваше первое приложение Yii. Мы будем использовать yiic (инструмент командной строки) для создания нового приложения Yii и Gii (мощный веб-генератор кода) для автоматизации создания кода для определенных задач. Для удобства мы предполагаем, что YiiRoot — это каталог, в котором установлен Yii, а WebRoot — это корневой каталог документов нашего веб-сервера.

Запустите yiic в командной строке следующим образом:

Примечание. При запуске yiic в Mac OS, Linux или Unix вам может потребоваться изменить права доступа к файлу yiic, чтобы он стал исполняемым. Кроме того, вы можете запустить инструмент следующим образом:

Это создаст скелет приложения Yii в каталоге WebRoot/testdrive. Приложение имеет структуру каталогов, необходимую большинству приложений Yii.

Не написав ни единой строки кода, мы можем протестировать наше первое приложение Yii, перейдя по следующему URL-адресу в веб-браузере:

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

Контактная страница с ошибками ввода

Контактная страница с сообщением об успешном завершении

На следующей диаграмме показана структура каталогов нашего приложения. Подробное объяснение см. в разделе «Условные обозначения».

Описанный выше генератор приложений также поддерживает создание файлов, необходимых системе контроля версий Git. Следующая команда создаст необходимые файлы .gitignore (например, не следует отслеживать содержимое ресурсов и время выполнения) и .gitkeep (принудительно отслеживает изначально пустые, но важные каталоги):

Другой поддерживаемой системой контроля версий является Mercurial: передайте значение hg в качестве третьего параметра, если вы используете эту систему контроля версий. Эта функция доступна, начиная с версии 1.1.11.

1. Подключение к базе данных ¶

Большинство веб-приложений поддерживаются базами данных. Наше приложение для тест-драйва не является исключением. Чтобы использовать базу данных, нам нужно сообщить приложению, как к ней подключиться. Это делается в файле конфигурации приложения WebRoot/testdrive/protected/config/main.php, выделенном следующим образом,

Вышеприведенный код указывает Yii, что при необходимости приложение должно подключаться к базе данных SQLite WebRoot/testdrive/protected/data/testdrive.db. Обратите внимание, что база данных SQLite уже включена в скелет приложения, которое мы только что создали. База данных содержит только одну таблицу с именем tbl_user :

Если вы хотите вместо этого попробовать базу данных MySQL, вы можете использовать прилагаемый файл схемы MySQL WebRoot/testdrive/protected/data/schema.mysql.sql для создания базы данных.

Примечание. Чтобы использовать функцию базы данных Yii, нам нужно включить расширение PHP PDO и расширение PDO для драйвера. Для тестового приложения нам нужно включить расширения php_pdo и php_pdo_sqlite.

2. Реализация операций CRUD ¶

Теперь самое интересное. Мы хотели бы реализовать операции CRUD (создание, чтение, обновление и удаление) для только что созданной таблицы tbl_user. Это также обычно необходимо в практических приложениях. Вместо того, чтобы утруждать себя написанием самого кода, мы будем использовать Gii — мощный веб-генератор кода.

Информация: Gii доступен с версии 1.1.2. До этого мы могли использовать вышеупомянутый инструмент yiic для достижения той же цели. Дополнительные сведения см. в разделе Реализация операций CRUD с помощью оболочки yiic.

Настройка Gii

Чтобы использовать Gii, нам сначала нужно отредактировать файл WebRoot/testdrive/protected/config/main.php, известный как файл конфигурации приложения:

Создание модели пользователя

После входа нажмите на ссылку Генератор моделей . Это приведет нас к следующей странице создания модели,

В поле "Имя таблицы" введите tbl_user . В поле Класс модели введите User . Затем нажмите кнопку Предварительный просмотр. Это покажет нам новый файл кода, который нужно сгенерировать. Теперь нажмите кнопку «Создать». Новый файл с именем User.php будет сгенерирован под protected/models. Как мы опишем позже в этом руководстве, этот класс модели User позволяет нам взаимодействовать с базовой таблицей tbl_user базы данных объектно-ориентированным способом.

Создание CRUD-кода

После создания файла класса модели мы сгенерируем код, реализующий операции CRUD с данными пользователя. Мы выбираем Crud Generator в Gii, как показано ниже,

В поле Класс модели введите Пользователь . В поле Controller ID введите пользователя (в нижнем регистре). Теперь нажмите кнопку Preview, а затем кнопку Generate. Мы закончили генерацию кода CRUD.

Доступ к страницам CRUD

Давайте насладимся нашей работой, просмотрев следующий URL-адрес:

Это отобразит список пользовательских записей в таблице tbl_user.

Нажмите кнопку "Создать пользователя" на странице. Мы попадем на страницу входа, если мы еще не вошли в систему. После входа в систему мы видим форму ввода, которая позволяет нам добавить новую запись пользователя. Заполните форму и нажмите кнопку Создать. Если есть какая-либо ошибка ввода, появится красивое сообщение об ошибке, которое не позволит нам сохранить ввод. Вернувшись на страницу списка пользователей, мы должны увидеть нового добавленного пользователя, появившегося в списке.

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

Если мы войдем в систему как администратор, используя admin/admin , мы сможем просмотреть страницу администрирования пользователя со следующим URL-адресом:

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

Все эти замечательные функции не требуют от нас написания ни одной строки кода!

Yii — это быстрая и безопасная система для создания приложений PHP. У него великолепная поддержка различных баз данных.

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

Мы много раз слышим о каждом разнообразном фреймворке для PHP. Здесь я постараюсь продемонстрировать вам самый быстрый способ создания веб-приложения Yii с использованием встроенных инструментов, предоставляемых Yii. Это должно быть возможно всего за пару шагов.

Итак, давайте посмотрим, как

Сначала загрузите последний исходный код Yii.

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

Распакуйте загруженный zip-файл в каталог вашего проекта. Запустите yiic в командной строке, как указано ниже –

Это сформирует каркас приложения Yii в каталоге WebRoot/testdrive. Приложение имеет структуру каталогов, которая требуется для большинства приложений Yii.

Когда вы запустите эту команду, вы можете увидеть это приложение, перейдя к –

УСТРАНЕНИЕ НЕПОЛАДОК

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

«php.exe» не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл»

Повторно проверьте правильность настройки.

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

Чтобы работать с базой данных, мы должны открыть файл main.php в каталоге config. Раскомментируйте массив db и введите соответствующие параметры базы данных следующим образом:

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

Кроме того, для этого есть автоматизированный инструмент. Это называется инструмент gii. Вы найдете альтернативы для создания нескольких вещей, таких как CRUD, модели и т. д.

Теперь мы начнем веселую часть. Мы можем захотеть выполнить действия CRUD. Это также обычно требуется в функциональных приложениях с помощью инструмента Gii.

Чтобы использовать Gii, нам сначала нужно изменить файл WebRoot/testdrive/protected/config/main.php, который называется файлом конфигурации приложения:

Теперь мы создадим модель пользователя. После входа нажмите на ссылку Генератор моделей. Это приведет нас на страницу создания модели.

В поле "Имя таблицы" введите tbl_user. В поле Класс модели введите Пользователь. В этот момент нажмите Предварительный просмотр. Это покажет нам новый файл кода, который нужно создать. Теперь нажмите кнопку «Создать». Другой файл с именем User.php будет создан в разделе protected/models. Этот класс модели User позволяет нам взаимодействовать с таблицей tbl_user фундаментальной базы данных в объектно-ориентированном шаблоне.

При создании файла класса модели мы создадим код, который выполняет задачи CRUD для информации о пользователе. Мы выбираем Crud Generator в Gii.

В поле "Класс модели" введите "Пользователь". В поле Controller ID введите строчными буквами – «user». Затем нажмите кнопку «Предварительный просмотр» рядом с кнопкой «Создать». Мы прекратили работу генератора кода CRUD.

Теперь пришло время получить доступ к страницам CRUD.

Давайте еще немного повеселимся в нашей работе, просмотрев указанный URL –

Это покажет нам список записей пользователей в таблице tbl_user.

Нажмите кнопку "Создать пользователя" на странице.

Мы попадем на страницу входа, если мы еще не вошли в систему. После входа в систему мы увидим форму ввода, которая позволяет нам включить запись для нового пользователя. Завершите эту форму и нажмите на кнопку «Создать». В случае какой-либо ошибки при вводе появится сообщение об ошибке, которое остановит нас от сохранения информации. На странице со списком пользователей мы должны увидеть недавно добавленного пользователя, отображающегося в кратком изложении.

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

Если мы войдем в систему как администратор, используя admin/admin, мы увидим страницу администратора пользователя с указанным ниже URL-адресом –

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

Итак, вы, должно быть, уже поняли, что все эти достойные характеристики так легко доступны, не ожидая, что мы напишем ни одной строки кода. Все благодаря фреймворку Yii!

Читайте также: