Большинство валидаторов в Yii имеют свойство allowEmpty, которое означает условие когда проверяемый атрибут может быть пустым. Исключением из этого большинства является CRequiredValidator, у которого данного свойства нет. Вообще это логично, так как этот валидатор необходим, чтобы проверить обязательное присутствие значения, однако возникают ситуации когда обязательность того или иного атрибута зависит от внешних настроек. Я взял стандартный класс CRequiredValidator и добавил всего несколько строк кода, для реализации необходимого мне поведения.
Теперь я могу писать вот так (отрывок метода rules()):
В одном из проектов необходимо было использовать простенький висивиг-редактор. Мой выбор пал на — редактор, использующий jQuery. Для подключения редактора был написан совсем маленький виджет, который позволяет легко и просто из любого элемента типа textarea сделать тот самый висивиг-редактор.
Пример использования (отрывок кода из файла представления (view)):
Единственным обязательным параметром является domId, он должен содержать id элемента textarea, который мы хотим превратить в висивиг-редактор. В данном примере параметр принимает значение Page_body.
Разрабатывая любое приложение, разработчик старается сделать его как можно более масштабируемым, легко поддерживаемым и расширяемым. Частично эти задачи решает .
Для начала стоит определиться что же такое модуль в терминах Yii. Как гласит , Модуль — это самодостаточная программная единица, состоящая из моделей, представлений, контроллеров и иных компонентов. Основная особенность модулей состоит в том, что их можно использовать в совершенно разных проектах, т.е. написав и отладив модуль один раз — его можно будет использовать и в других проектах… Но это все в теории. На практике же очень часто функциональность модуля зависит от основного приложения или же от других модулей. Например, допустим, мы пишем модуль «Форум» и хотим сделать его автономным и независимым от остального приложения. Тут возникает несколько проблем
В документации по фреймворку Yii есть , в котором описывается несколько способов увеличения производительности Yii-приложений. Одним из способов является подключение JavaScript-библиотек и фреймворков не с ваших собственных серверов, а с так называемых, . Это позволяет значительно увеличить скорость загрузки веб-страниц и снизить нагрузку на собственные сервера. В состав Yii уже входит компонент , который позволяет загружать JavaScript библиотеки с . Относительно недавно у Яндекса появился свой , для работы с которым и был разработан этот небольшой класс-хелпер.
Полезные ссылки:
Рекомендую к прочтению, следующие книги по клиентской оптимизации:
В одном из проектов (проект на Yii) возникла необходимость размещать в материалах сайта кнопки для публикации контента в различных социальных сервисах, таких как ВКонтакте, Mail.ru, FaceBook, Twitter и некоторых других. В результате на свет появился набор виждетов, которые и выводили все эти кнопочки. После того как эти маленькие классики были готовы, возникла идея объединить их в набор, так называемых, «Социальных компонентов для фреймворка Yii» — вот так на свет и появился Yii Social Components(YSC).
На данный момент в этот набор входит 5 виджетов для отрисовки кнопок, предназначенных для публикации контента в различных сервисах:
— FaceBook
— Twitter
— Google buzz
— Mail.ru
— Vkontakte
В дальнейшем планирую добавить виджеты для других социальных сервисов, кроме того, все таки хочу найти время и доточить свой классик для .
Имеется кратенькая документация для этих виджетов , котороя по мере появления новых компонентов будет обновляться.
p.s. Эти 5 виджетов выводят кнопки примерно такие, как можно видеть в этой статье (и на этом блоге), но, так как движок данного блога не на Yii, то я их вывел простой вставкой js-кода.
При разработке одного из проектов, возникла задача дать возможность пользователю авторизоваться по . Так как проект писался на , то я начал поиски компонента для этого фреймворка, который помог бы мне с этой задачей. Был задан ответа так и не последовало =(.
Было принято решение написать такой компонент (или что-то подобное) самому. Изначально я не планировал разбираться во всех тонкостях протокола OpenID, а потому решил просто написать обертку (врапер) для одной из существующих библиотек. В качестве такой библиотеки была выбрана вот эта
Возможно как раз из-за нехватки знаний о каких-то специфических тонкостях протокола и его реализации в этой библиотеке, привело к тому, что, полученный врапер работал (и сейчас работает) не совсем корректно. О том, что именно не так расскажу чуть позже.
После некоторого времени разработки я получил , который очень легко и удобно (на мой взгляд) использовать.