Все потоки
Поиск
Написать публикацию
Обновить
0

Yii *

Фреймворк, реализующий парадигму MVC

Сначала показывать
Порог рейтинга
Уровень сложности

Юнит-тестирование моделей в Yii

Время на прочтение6 мин
Количество просмотров19K
Сейчас я расскажу про применение техники TDD для разработки моделей, используя Yii-framework.
Изначально предполагается, что была прочитана тема «Тестирование» из официального мануала (http://yiiframework.ru/doc/guide/ru/test.overview).

Итак, окружение настроено и сейчас нашей задачей будет — создать модели категории и продуктов(Category, Product) и покрыть их тестами.

Читать дальше →

Оптимизация использования моделей от Active Record, и немного массивов

Время на прочтение3 мин
Количество просмотров7.3K
Сделал я недавно некий тест, который выдал любопытные данные. Коими хочу поделиться, дабы помочь многим прояснит спорные ситуации.
Везде только и пишут, что насколько быстры массивы, насколько медлителен Active Record… Но когда видишь конкретные цифры гораздо легче понимать что на сколько лучше другого.

Используемые материалы:


— обычный ноутбук: Intel core 2 duo 2.13GHz, RAM 6 GB
— php 5.3
— apache 2.2
framework Yii 1.1.10
Active Record

Читать дальше →

Yii: Динамическое изменение правил валидации (сценариев)

Время на прочтение5 мин
Количество просмотров16K
В данном маленьком топике я хотел бы рассказать об одном очень простом рецепте (который многим из вас, вероятно знаком) в контексте фреймворка Yii. Речь идет о динамическом изменении правил валидации формы — когда правила валидации изменяются в зависимости от выбора пользователя вашего приложения, сделанного, например, путем выбора значения из списка или установленного чекбокса.
Читать дальше →

Разделение конфигураций в Yii по взрослому

Время на прочтение2 мин
Количество просмотров13K
Вместо предисловия
Занялся я с недавних пор Yii «по производственной необходимости». До этого сидел на ZF. Некоторые вещи в Yii кажутся неудобными или негибкими. В частности отсутствие раздельное конфигурации и работа с frontend/backend. Правда AR порадовал )). Но о чем это я?!

Ближе к делу
Начнем с самого начала, с удобной и гибкой конфигурации. Разумеется что перед решением по разделению конфигурации для паблик сервера и разработчика я полазил по форумам, посмотрел что пишут на хабре… Но все решения сводятся к определению имени хоста и решения на его основе о нужной конфигурации. Но увольте, есть же тестеры, есть команды разработчиков, есть много еще чего. В общем предлагаемый подход мне не нравится. Предлагаю свое решение по примеру ZF. Все очень просто. Я использую apache, поэтому решение для него. Весть секрет заключается в определении серверной переменной APPLICATION_ENV, а все остальное как везде.

Читать дальше →

Yii расширяем CHtml для работы с текстовыми полями

Время на прочтение6 мин
Количество просмотров13K
Всем привет. Сейчас занимаюсь написанием очередного проекта на Yii и хотел бы поделиться кое-какими наработками. В этой статье я хотел бы описать, каким образом можно расширять функциональность фреймворка с помощью наследования классов CHtml, CActiveForm. Тут нет ничего сложного и инновационного, я просто хотел бы поделиться этим. Моя задача состояла в том, чтобы создать 2 элемента:
  • Текст, который при нажатии превращается в input
  • Блок, имеющий определенную ширину, в который может не поместиться весь необходимый текст, но при наведении появляется подсказка


Вот пример результата работы следующего кода (код после хабраката):

image
Читать дальше →

Реализация шаблона Identity Map в Yii Framework

Время на прочтение3 мин
Количество просмотров8.3K
Доброго времени суток, хабрасообщество!

Проблема


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

Например, допустим, у нас есть некоторая модель ActiveRecord — Expence и вот такой код:
$modelOne = Expence::model()->findByPk(10);
$modelTwo = Expence::model()->findByPk(10);
var_dump($modelOne === $modelTwo); // Вернет false

Таким образом, меняя одну модель мы никоим образом не затронем вторую(что логично, так как они ссылаются на разные объекты).
$modelOne->someField = "Data";
$modelOne->save();
/// ...какой-то код...
echo $modelTwo->someField; // Содержит старое значение
$modelTwo->save(); // Затираем ранее записаные данные

Читать дальше →

YiiConf 2012, открыта финальная регистрация

Время на прочтение1 мин
Количество просмотров858
image

Открыта финальная регистрация на первую ежегодную профессиональную конференцию YiiConf.

  • Дата проведения конференции: 19 мая
  • Стоимость участия: $50, 1500р. или 400 гривен
  • Количество мест: 200
  • Место проведения: ул. Михайловская, 1/3 (Площадь Независимости) г. Киев, 01001, Украина


Читать дальше →

Дискретные проекты Yii на основе общего ядра

Время на прочтение7 мин
Количество просмотров7.2K

Добрый вечер всем хабраюзерам!

Хочу поделиться определёнными идеями и соображениями на тему создания обособленных проектов в Yii на основе одного общего ядра.

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

Изначально, что называется, «из коробки», Yii уже поставляется отдельными папками с самим ядром и несколькими демо-проектами на нём, но мне этого было мало, поскольку требовались несколько другие возможности по управлению и контролю за проектами, на основе чего и были созданы те идеи, которые я хочу изложить.

Читать дальше →

KCAPTCHA для Yii

Время на прочтение3 мин
Количество просмотров7K
Первая проблема которая у меня встала при работе Yii — отсутствие нормальной каптчи. Дефолтная каптча меня не устроила ряду причин:
  • постонянно глючила (просто нажимая F5 иногда она отображалась нормально, иногда отображалась пустая картинка, иногда каринка с одиним первым симоволом);
  • сам агоритм мне показался слишком простым (+ используется всего один шрифт);
  • не обновлялся код на картинке при перезагрузки страницы.

Прогуглив, я понял, что с подобными проблемами сталкиваюсь не я один. А вариант с рекаптчей тоже «не вариант» — её было невозможно вписать в нужный мне дизайн (либо я просто плохо в ней разобрался).

Т.к. в своих проектах я обычно использую каптчу «KCAPTCHA» (http://captcha.ru/kcaptcha/), то решил совместить существующую каптчу из Yii и «KCAPTCHA». И вот, что у меня, получилось — glavweb.ru/public/download/kcaptcha.zip
Читать дальше →

Как подружить Yii (ActiveDataProvider) и Text Search в PostgreSQL

Время на прочтение5 мин
Количество просмотров3.3K

Использование PostgreSQL tsearch2 в проекте на Yii


Любой сайт — это прежде всего тексты. Для того, чтобы тексты было удобно редактировать их часто хранят в БД. При этом появляются дополнительные возможности, такие как удобный поиск по содержимому текстового поля. Старый добрый LIKE хорош, но не всегда. Есть более продвинутые вещи, такие как tsearch2 в PostgreSQL. Как им воспользоваться в Yii Framework я расскажу под катом.
Читать дальше →

Кеширование в Yii с помощью тегов

Время на прочтение3 мин
Количество просмотров9.1K
Yii позволяет кешировать данные в виде массива возвращаемые прямиком из базы данных.
А у системы кеширования есть разные зависимости. Вот только ни одна из этих зависимостей не позволяет автоматически отслеживать изменения в таблице без обращения к ней же (имею ввиду CDbCacheDependency), что в нагруженных системах бессмысленно.

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

Читать дальше →

Codeigniter Notify (UPD:16.06.12)

Время на прочтение4 мин
Количество просмотров3.2K
Доброй ночи, хабралюди.
Хотел бы поделиться с вами самодельной библиотекой для codeigniter под названием Notify.
Она создана для вывода сообщений пользователю.
Читать дальше →

Валидация в Yii

Время на прочтение6 мин
Количество просмотров35K
Доброго времени суток. Сегодня мне хотелось бы разобрать такую интересную возможность Yii Framework, как валидация данных моделей. На момент написания статьи актуальная версия фреймворка 1.1.10, собственно рассматривать валидацию на ней и будем.
Хочу сразу сказать, что мне не хочется перепечатывать мануалы и API, поэтому я по возможности буду ссылаться на готовые источники. Кроме того, я не буду описывать то, как пользоваться валидаторами. Я постараюсь раскрыть механизм валидации моделей Yii на основе правил валидации, чтобы используя их вы понимали что же на самом деле происходит и где в случае чего можно искать ошибки.
Читать дальше →

Ближайшие события

Lily — модуль для управления пользователями с авторизацией через различные сервисы

Время на прочтение2 мин
Количество просмотров4.6K
Думаю, редкий человек, следящий за блоком Yii на хабре, не видел статью об экстеншене для авторизации через социальные сети EAuth. Сегодня я хочу представить в некотором роде продолжение этой темы, а именно модуль для управления пользователями, основанном на вышеупомянутом дополнении.
Читать дальше →

Обновление грида через ajax

Время на прочтение5 мин
Количество просмотров42K
Привет, хабрасообщество!

В этой теме я хочу обсудить наиболее правильное использование компонента CGridView в Yii.
Ниже я опишу 3 способа, которые вижу лично я, и буду рад услышать ваши идеи в комментариях.



Итак, задача:
Требуется страница с несколькими блоками, в одном из которых должна быть таблица (грид).
Нужна возможность сортировки и постраничной навигации грида через ajax.


Звучит несложно, не правда ли? Давайте посмотрим, что нам предлагает Yii.
Читать дальше →

Yii и мультиязычный сайт. Правильные URL и гибкость в работе

Время на прочтение5 мин
Количество просмотров40K

При написании одного проекта, возникла необходимость в организации мультиязычности на сайте. Причем количество языков не должно ограничиваться двумя и URL должны быть человеко-понятные и SEO оптимизированные. Тоесть ссылки на сайте должны быть вида:
http://mysupersite.ru/ru/contacts для русского языка
http://mysupersite.ru/en/contacts для английского языка
Так как опыт у меня не очень большой, я начал вопрошать гугл. Вариантов, как оказалось, достаточно много, однако из всех мне приглянулся один вариант, который я использовал и слегка модифицировал.
Итак, как сделать сайт мультиязычным...

YiiConf 2012, Киев

Время на прочтение2 мин
Количество просмотров1K
Приглашаем Вас принять участие в первой ежегодной профессиональной конференции веб разработчиков, использующих в своих приложениях фреймворк Yii. Время проведения конференции – середина мая. Конкретные даты станут известны чуть позже, а пока что вы можете пройти предварительную регистрацию.

Финальная регистрация будет проходить после окончательного формирования списка докладов и докладчиков. Все прошедшие предварительную регистрацию получат уведомление заранее.

Читать дальше →

AssetManager: как форсировать получение пользователем обновленной статики

Время на прочтение5 мин
Количество просмотров19K
При разработке веб-приложений существует одна общеизвестная проблема. Мы, программисты, пишем новый javascript-код, стили в css, меняем статику… И статика эта как правило кешируется браузером пользователя и может оставаться в кеше на довольно долгое время (и это на самом деле правильно, ибо может ускорить загрузку страниц в разы).

Но что же делать, если мы поменяли статику? Как заставить пользователя сбросить кеш и обновить эти файлы? Существуют некоторые общепринятые способы, например, добавлять версионную метку к имени файла, или добавлять временную метку в GET-параметре при подключении файла.

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

Быстрые счетчики в Yii

Время на прочтение2 мин
Количество просмотров12K
В релизе 1.1.8 PHP-фреймворка Yii появилcя дополнительный метод в классе CActiveRecord для работы со счетчиками, а именно saveCounters. Наверное, многие из вас читали о нем в анонсе релиза. Под катом я расскажу в чем его крутость и почему стоит его использовать. Возможно, после прочтения вы побежите рефакторить свой код.
Читать дальше →

Yii переехал на GitHub

Время на прочтение1 мин
Количество просмотров2.2K
Мы официально целиком и полностью переехали на GitHub. Перенесён весь код с полной историей, а также трекер со всеми тикетами.

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

Использующим SVN нужно обновить URL на https://github.com/yiisoft/yii/trunk/.

Читать дальше →

Вклад авторов