Как стать автором
Обновить
0

Yii *

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

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

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

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

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

Читать дальше →
Всего голосов 12: ↑8 и ↓4+4
Комментарии23

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

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


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

image
Читать дальше →
Всего голосов 13: ↑9 и ↓4+5
Комментарии12

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

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

Проблема


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

Например, допустим, у нас есть некоторая модель 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(); // Затираем ранее записаные данные

Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии81

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

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

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

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


Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии15

Истории

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

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

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

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

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

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

Читать дальше →
Всего голосов 25: ↑17 и ↓8+9
Комментарии34

KCAPTCHA для Yii

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

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

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

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

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

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


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

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

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

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

Читать дальше →
Всего голосов 26: ↑23 и ↓3+20
Комментарии5

Codeigniter Notify (UPD:16.06.12)

Время на прочтение4 мин
Количество просмотров3.1K
Доброй ночи, хабралюди.
Хотел бы поделиться с вами самодельной библиотекой для codeigniter под названием Notify.
Она создана для вывода сообщений пользователю.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии23

Валидация в Yii

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

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

Время на прочтение2 мин
Количество просмотров4.5K
Думаю, редкий человек, следящий за блоком Yii на хабре, не видел статью об экстеншене для авторизации через социальные сети EAuth. Сегодня я хочу представить в некотором роде продолжение этой темы, а именно модуль для управления пользователями, основанном на вышеупомянутом дополнении.
Читать дальше →
Всего голосов 29: ↑25 и ↓4+21
Комментарии18

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

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

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



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


Звучит несложно, не правда ли? Давайте посмотрим, что нам предлагает Yii.
Читать дальше →
Всего голосов 20: ↑16 и ↓4+12
Комментарии35

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

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

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

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

YiiConf 2012, Киев

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

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

Читать дальше →
Всего голосов 48: ↑46 и ↓2+44
Комментарии24

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

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

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

В случае, если вы используете фреймворк Yii, вы также можете указывать версии или временные метки у файлов скриптов и стилей при подключении, однако за этим постоянно нужно следить, а в случае Yii еще и следить за отсутствием конфликтов (когда, допустим, виджет и вьюшка используют один и тот же скрипт, но с разными временными метками).
Собственно говоря, в Yii можно организовать более цивилизованный подход к этому делу.
Об этом то я и приглашаю вас почитать
Всего голосов 37: ↑36 и ↓1+35
Комментарии15

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

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

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

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

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

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

Читать дальше →
Всего голосов 67: ↑60 и ↓7+53
Комментарии17

Yii 1.1.10

Время на прочтение1 мин
Количество просмотров976
Вышел релиз 1.1.10 PHP фреймворка Yii. В данной версии, в основном, исправлены ошибки в CActiveForm, CJuiDatePicker и невозможность запуска с yiilite.php.

Всего голосов 21: ↑16 и ↓5+11
Комментарии19

Схема обработки ошибок в Yii

Время на прочтение4 мин
Количество просмотров34K
Всем привет!
Процесс обработки ошибок в Yii был для меня не совсем прозрачным с первых дней использования этого фреймворка. Даже несмотря на наличие в документации специального раздела Error Handling. В каких случаях какие view используются, как влияет ajax или debug-режим, зачем нужен errorAction, в чем отличия при обработке исключений?
В итоге после копания в документации и исходном коде фреймворка я нарисовал наглядную схему обработки ошибок, которая лично для меня оказалась весьма полезной и наверняка пригодится кому-то еще.
Под катом собственно схема и некоторые комментарии к ней.
Читать дальше →
Всего голосов 49: ↑46 и ↓3+43
Комментарии22

Простая реализация Restful для Yii

Время на прочтение4 мин
Количество просмотров11K
Введение

Решился я на медни написать расширение google chrome для проекта компании в которой работаю. Расширение и сам проект посвящен авто тематики. В процессе написания меня раздражала серверная часть которая отдавало расширению готовые данные разметку и стили, а хотелось json. На глаза попалась статья о restful и решил написать сервеную часть на restful архитектуре.
Наш проект реализован на нативном php без использования каких либо фреймворков. Написал простой класс реализующий нужные феньки, но на этом не смог остановится, так как я поклонник yii решил реализовать сие и для него. Сторонние разработки посмотрел, но хотелось своего, к тому же мной написанный класс нормально справлялся с возложенными на него задачами. Адаптированный мой класс для yii показал коллегам, рассказав что да как им понравилось. Но тут меня понесло, хотелось еще проще.
Читать дальше →
Всего голосов 10: ↑6 и ↓4+2
Комментарии20

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

Работа

PHP программист
147 вакансий