Yii фреймворк: создание XML-RPC сервера

На мой взгляд, XML-RPC протокол является одним из наиболее удобных способов передачи данных между Интернет-ресурсами. Можно, конечно, поспорить, но на изучение XML-RPC требуется минимальное количество времени, есть множество готовых библиотек, да и используется он очень широко. Поэтому я никогда не понимал, почему разработчики отличного фреймворка Yii решили не включать библиотеку для работы с XML-RPC в дистрибутив. Хотя, возможно, это вопрос времени
Тем не менее, работать нужно уже сейчас, и в этой статье мы разберём, как решить проблему с помощью сторонних библиотек.
Примечание. Если вас интересует создание XML-RPC клиента, почитайте статью XML-RPC и Yii фреймворк.
Немного теории.
Мы можем использовать два основных подхода при создании XML-RPC сервера.
1) Отдельный скрипт. В этом случае создаём файл с именем вроде xmlrpc.php и помещаем его в корень сайта. В нём будет находиться код обработки XML-RPC запросов. Такой подход используется, например, в WordPress. Достоинство в том, что вам не нужно вносить никаких изменений в код вашего проекта, т.е. XML-RPC интерфейс получается независимым. С другой стороны, независимость приводит к тому, что вам будет гораздо сложнее работать со встроенными библиотеками фреймворка.
2) Использование действий контроллера. Этот вариант гораздо интереснее. Во-первых, вы автоматически получаете доступ ко всем возможностям Yii. Во-вторых, в этом случае XML-RPC методы можно разделить по модулям. Т.е. подключение / отключение модуля будет автоматически подключать / отключать соответствующие XML-RPC методы.
Читать дальше »
Опубликовано в PHP, Web разработка, Yii | Комментариев нет »
Как «подружить» сервис Loginza и фреймворк Yii

Постоянные читатели этого блога, наверное, помнят, что и о фреймворке Yii, и о сервисе аутентификации Loginza я раньше рассказывал. Найти эти статьи несложно: Yii, Loginza.
Но в статье о Loginza, речь шла о протоколе обмена данными с сервисом, а вопрос аутентификации остался «за бортом». Я, конечно, объяснил когда нужно создавать сессию, но на практике этого явно недостаточно
В этой статье я постараюсь исправить этот недостаток и покажу пример аутентификации пользователя с помощью сервиса Loginza.
Прежде всего, определим требования к такой системе.
Читать дальше »
Опубликовано в PHP, Web разработка, Yii | Комментарии (39) »
Yii фреймворк: установка дефолтных параметров для виджетов

Сегодня хочу показать небольшую особенность, которую нужно учитывать при разработке виджетов для фреймворка Yii.
В большинстве случаев, виджеты состоят из файла самого виджета и файла с представлением.
Например, у нас есть файлы.
protected/components/MyWidget.php – класс виджета
и
protected/components/views/myWidget.php – представление.
Класс виджета может выглядеть примерно так.
Читать дальше »
Опубликовано в PHP, Web разработка, Yii | Комментарии (21) »
Yii PHP framework: контроль доступа с использованием ролей (RBAC)

Я думаю, все, кто хоть немного работал с фреймворком Yii знают, что он поддерживает возможность разграничения прав доступа на основе ролей.
Принцип работы этой системы достаточно прост. Вы создаёте наборы правил и пользователей, связываете их между собой. После этого, вы в любой момент можете проверить, имеет ли пользователь право на выполнение какой-то операции или нет.
Одно из основных преимуществ использования данной библиотеки заключается в том, что вам нужно написать минимум кода для проверки прав доступа. Обычно этот код выглядит следующим образом.
if (!Yii::app()->user->checkAccess('createUser')) {
throw new CHttpException(403, 'Forbidden');
}
//остальной код…
В теории всё просто. Но на практике, документации и примеров по этой теме практически нет (надеюсь, это скоро изменится).
Основные источники информации (на русском): Аутентификация и авторизация и RBAC и описание ролей в файле. На английском хороших и подробных примеров, к сожалению, я не нашел.
Примечание. Очень советую прочитать эти статьи, прежде чем переходить к моему примеру.
Когда я первый раз решил использовать RBAC, то выяснилось, что есть множество нюансов, которые приходится учитывать при работе с этой библиотекой. Ничего запредельно сложного и недоступного для понимания, но «ковырялся» я довольно долго ![]()
Читать дальше »
Опубликовано в PHP, Web разработка, Yii | Комментарии (28) »
CGridView. Часть вторая. AJAX.

В этой части я хочу рассказать о некоторых особенностях реализации AJAX запросов в компоненте CGridView.
Предположим, у нас есть таблица, и мы создали для неё модель и скрипты для выполнения CRUD операций (с помощью встроенного генератора Yii).
Пусть таблица называется countries, содержит список стран с двумя полями (id, name).
В этом случае, страница управления записями будет доступна адресу
Читать дальше »
Опубликовано в Ajax, PHP, Web разработка, Yii | Комментарии (27) »
Yii PHP фреймворк: оформление административных страниц

Одной из наиболее мощных возможностей фреймворка Yii является генерация кода. Она позволяет сразу после создания таблицы в базе данных получить файлы модели, контроллера и представлений. Т.е. весь необходимый код для выполнения CRUD операций.
Но, естественно, код формируется по стандартному шаблону, дизайн которого вам, возможно, захочется изменить.
Взгляните на обычную страницу управления записями, сформированную с помощью компонента CGridView.
Читать дальше »
Опубликовано в HTML, PHP, Web разработка, Yii | Комментарии (20) »
Yii PHP framework: создание запросов с условием IN

Последнее время мне довольно часто приходится работать с фреймворком Yii. И иногда возникают вопросы, ответы на которые не очевидны (во всяком случае для меня).
Попробую объяснить. Сам фреймворк, на мой взгляд, достаточно удобный и документация подробная. Но классов много, и формат передачи данных их методам часто сильно влияет на результат.
Рассмотрим небольшой пример – использование оператора IN.
Т.е. нужно сформировать примерно такой запрос.
SELECT * FROM tbl_users WHERE id IN (1, 2, 3)
Опубликовано в MySQL, PHP, Web разработка, Yii | Комментарии (16) »
Yii фреймворк: получение статистики перехода по ссылкам от сервиса Bit.ly

Сегодня продолжим тему использования сервиса Bit.ly вместе с PHP фреймворком Yii. В прошлой части мы рассмотрели создание коротких ссылок для страниц вымышленного сайта с новостями.
В этой части мы создадим отдельную страницу, на которой будет отображаться статистика переходов по коротким ссылкам.
Приступим.
Читать дальше »
Опубликовано в PHP, Web разработка, Yii | 1 Комментарий »
Использование сервиса Bit.ly вместе с PHP фреймворком Yii

Думаю, о твиттере и о том, какую роль в нем играют короткие ссылки, слышали все. В принципе, можно вообще не заморачиваться, т.к. twitter сам создаст их для вас, но при таком подходе возникнет несколько проблем.
Во-первых, длина ссылки и текста может превысить 140 символов. Т.е. ссылку лучше сразу сократить.
Во-вторых, будет сложнее отслеживать статистику переходов.
Поэтому гораздо удобнее использовать специализированные сервисы, например, Bit.ly. Этот сервис предоставляет API как для создания ссылок, так и для получения статистики переходов по ним.
Теперь рассмотрим небольшой пример.
Читать дальше »
Опубликовано в PHP, Web разработка, Yii | Комментарии (2) »
Ограничения фреймворков (на примере Yii)

О том, что фреймворки позволяют сократить время разработки, знают все. Но иногда при этом появляются самые неожиданные ограничения.
По-идее, так и должно быть. Каким бы универсальным не пытались сделать фреймворк разработчики, всегда чем-то приходится жертвовать. Точнее искать компромисс между количеством кода, который должен написать пользователь и гибкостью.
В этой статье я хочу показать пример такой ситуации, и, естественно, её решение.
Читать дальше »
Опубликовано в Ajax, HTML, JavaScript, PHP, Web разработка, Yii | Комментарии (10) »





