Категории: Yii

XML-RPC и Yii фреймворк

Владимир | | PHP, Web разработка, Yii.

yii xml rpc

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

Но, как оказалось, этот недостаток несложно исправить. Рассмотрим небольшой пример, получение нескольких записей из блога на движке WordPress с помощью XML-RPC запроса.

Шаг 1. Загружаем библиотеку для работы с XML-RPC.
Читать дальше

Использование jqGrid вместе с Yii фреймворком

Владимир | | Ajax, JavaScript, PHP, Web разработка, Yii.

yii php jqgrid

Приветствую всех!

В этой статье речь пойдёт о том как использовать Yii PHP framework и плагин к jQuery под названием jqGrid. Я не буду повторяться и рассказывать о том, что из себя представляют Yii и jqGrid и зачем они нужны. Вы легко найдёте все мои заметки на эту тему с помощью поиска по блогу 😉 (кстати, все статьи о Yii вынесены в отдельный раздел).

Когда я проводил этот эксперимент, меня интересовали два момента:

1) подключение jgGrid;

2) преобразование данных, полученных с помощью CActiveDataProvider в формат понятный для jgGrid.

С первым пунктом всё более-менее понятно. jqGrid представляет собой набор JS и CSS файлов, которые нужно подключить к странице.
Читать дальше

Yii PHP framework: Запускаем Curl из консоли

Владимир | | PHP, Web разработка, Yii.

yii php console

Сегодня я продолжу рассказывать об использовании фреймворка Yii. На этот раз речь пойдёт о создании консольных приложений. Их удобно запускать с помощью планировщика, поэтому чаще всего они используются выполнения действий вроде отправки отчетов на eMail, получения данных и т.п. Вашу фантазию тут никто не ограничивает 😉

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

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

Yii фреймворк: создание кнопок с помощью CButtonColumn

Владимир | | Ajax, JavaScript, PHP, Web разработка, Yii.

yii php CButtonColumn

Тему этого поста подсказал мне читатель по имени Alex, за что ему большое спасибо.

Речь о компонентах zii, которые, начиная с версии 1.1, входят в состав фреймворка, и активно используются утилитой yiic при генерации кода.

К сожалению, документация по этим компонентам есть только в виде API (комментарии к исходникам) и её явно недостаточно.

Ситуация следующая. Если вас полностью устраивает код, который генерирует yiic — никаких проблем. Но вот что-то изменить или добавить какие-нибудь возможности уже сложнее.
Читать дальше

Новые компоненты фреймворка Yii: CDetailView

Владимир | | PHP, Web разработка, Yii.

yii php cdetailview

Знаете, чем больше я работаю с фрейворком Yii, тем больше он мне нравится. Конечно, он далеко не идеальный, но активно развивается. Правда это развитие идёт не совсем плавно, а скорее рывками, и при этом остаются пробелы. Самый большой из них – документация. Я имею в виду «Полное руководство», информация в API полная.

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

Но это всё общие рассуждения, а я собираюсь рассказать о вполне конкретной вещи – виджете CDetailView.
Читать дальше

Изменения в Yii 1.1: CActiveDataProvider

Владимир | | MySQL, PHP, Web разработка, Yii.

yii data provider

Я всё-таки решил продолжить обсуждение фреймворка Yii. Но на этот раз затяжных циклов я не планирую 🙂 , просто хочу рассказать о некоторых нововведениях в версиии 1.1.

Как вы, наверное, знаете, версия 1.1 довольно сильно отличается от 1.0.х. Есть и инструкция по переходу на новую версию.

Но есть момент, который может вызвать вопросы у тех, кто начинает знакомство с фреймворком с версии 1.1. Речь о классе CActiveDataProvider. Как несложно догадаться по названию, он предназначен для работы с базой данных. И если вы создадите сайт с помощью консольной утилиты yiic, то этот класс будет использован в методах actionIndex и actionAdmin контроллеров.

Класс очень удобный и позволяет сократить объём кода. Проблема в том, что документация немного отстаёт от жизни. В разделе о работе с базой данных подробно рассказывается об использовании классов CActiveRecord, CDbCriteria и других, но информация о CActiveDataProvider есть только в API.

Итак, что представляет собой этот класс.
Читать дальше

Yii PHP framework: создаём игровой сайт. Часть 11. Человекопонятные URL.

Владимир | | PHP, Web разработка, Yii.

yii game site permalinks

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

По-умолчанию, Yii фреймоворк использует следующую схему для формирования адреса страниц:

http://имя_сайта.домен/index.php?r=контроллер/действие&параметр1=значение1...

Т.е. адрес формируется из GET параметров. В них передаётся вся информация, необходимая фреймворку для определения того, какую именно страницу нужно сформировать.

Все отлично, но в таком виде адрес очень плохо читается. Желательно было бы его сократить и использовать запись без GET параметров. Фреймворк позволяет нам сделать это, не изменяя код приложения. Нужно только указать соответствующие правила в файле конфигурации приложения (protected/config/main.php).
Читать дальше

Yii PHP framework: создаём игровой сайт. Часть 10. Панель управления.

Владимир | | PHP, Web разработка, Yii.

yii game site dashboard

Сегодня мы займёмся панелью управления сайта. Часть этой панели мы уже сделали.

В третьей части (Аутентификация) мы создали контроллер DashboardController и переместили в него методы actionLogin и actionLogout.

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

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

В первую очередь создадим отдельный макет для страниц админки.
Читать дальше

Yii PHP framework: создаём игровой сайт. Часть 9. Поиск ошибок.

Владимир | | MySQL, PHP, Web разработка, Yii.

yii game site bugs

В этой части цикла мы рассмотрим некоторые возможности, которые предоставляет нам Yii фреймворк для отладки приложения.

Сразу хочу предупредить, эта статья не претендует на полноту. Я расскажу только от тех инструментах, которые использовал при разработке игрового сайта. Более подробную информацию можно найти в разделе Журналирование и Обработка ошибок.

Включаем режим отладки
Читать дальше

Yii PHP framework: создаём игровой сайт. Часть 8. Создаём виджеты.

Владимир | | MySQL, PHP, Web разработка, Yii.

yii_game_site_widgets

В этой части мы поговорим о том, какие средства предоставляет Yii для создания виджетов. Если верить википедии, виджет (widget) – это «контент модуль, который встраивается в веб-страницу или браузер» (вообще, это не совсем точно, в википедии есть несколько определений).

Правда здесь может возникнуть небольшая путаница в терминологии. Дело в том, что некоторые CMS (WordPress, например) используют термин виджет для обозначения особых плагинов, которые предназначены для отображения блоков с информацией в сайдбаре. Но сейчас нас интересует Yii PHP framework, поэтому мы будем считать виджетами объекты, которые наследуют класс CWidget.

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

Для нас важно, что CWidget имеет особенность. Он является потомком класса CComponent, и, следовательно, является компонентом.

Рассмотрим, как создаются компоненты в фреймворке Yii.
Читать дальше