Yii — php-фреймворк

индекс
104,84

Схема обработки ошибок в Yii из песочницы

Всем привет!
Процесс обработки ошибок в Yii был для меня не совсем прозрачным с первых дней использования этого фреймворка. Даже несмотря на наличие в документации специального раздела Error Handling. В каких случаях какие view используются, как влияет ajax или debug-режим, зачем нужен errorAction, в чем отличия при обработке исключений?
В итоге после копания в документации и исходном коде фреймворка я нарисовал наглядную схему обработки ошибок, которая лично для меня оказалась весьма полезной и наверняка пригодится кому-то еще.
Под катом собственно схема и некоторые комментарии к ней.
+43
13 января 2012, 12:54
209

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

Введение

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

Yii 1.1.9

Вышла стабильная версия PHP-фреймворка Yii с номером 1.1.9. В данном релизе около 60 улучшений и исправленных ошибок.

Полный список изменений можно посмотреть в соответствующем файле. Перед обновлением с более ранних версий важно ознакомиться с инструкциями.

Русскоязычная документация, как обычно, находится в полностью актуальном состоянии. Кроме того, поправлены все найденные на момент релиза опечатки. Спасибо всем, кто использует Orphus на yiiframework.ru.

Рассмотрим наиболее интересные изменения.

+28
1 января 2012, 09:22
34

Yii 1.1.8 — загрузка файлов с произвольным расширением с помощью CMultiFileUpload

Доброго всем времени суток!

Недавно делая сайт на Yii обнаружили такую вот дыру в загрузке файлов на сервер с помощью CMultiFileUpload (за что отдельное спасибо Mx21): есть возможность взять файл с произвольным расширением, дописать в конец имени что-то вроде .jpg и потом залить на сервер виджетом CMultiFileUpload. Даже не смотря на то, что свойство 'accept' имеет, к примеру, значения 'jpeg|jpg|gif|png', т.е. не должно аплоадить ничего кроме такого рода картинок, происходило следующее: файл без проблем закачивался на сервер, причем .jpg в конечном файле обрезалось и на сервере оказывался исходный файл с тем расширением какое оно было до того как мы его переименовали.
Используемая нами версия фреймворка 1.1.8.

Лечится следующим образом:
В файле /framework/web/js/jquery.multifile.js нужно исправить строки 222-223:
          if(MultiFile.accept && v && !v.match(MultiFile.rxAccept))//{
            ERROR = MultiFile.STRING.denied.replace('$ext', String(v.match(/\.\w{1,4}$/gi)));

вернее заменить их на следующий код:
			var str=this.value;
			var pattern='\.';
			var pos = str.indexOf(pattern);
			for (var count = 0; pos != -1; count++)
				pos = str.indexOf(pattern, pos + pattern.length);
          
          
          if((MultiFile.accept && v && !v.match(MultiFile.rxAccept)) || count>1)//{
            ERROR = MultiFile.STRING.denied.replace('$ext', String(v.match(/\.\w{1,4}$/gi)));


Т.е. добавили проверку на количество точек в имени загружаемого файла, если более одной точки получаем сообщение об ошибке «Invalid file type».
+1
14 ноября 2011, 12:57
12

7 причин для перехода с Drupal на Yii

По мотивам За что я люблю Drupal.
Опубликовано по просьбе JiLiZART (перевод, как я понял, тоже его).
Оригинал: erickennedy.org.

+38
4 ноября 2011, 15:57
91

Работа с битовой маской

Доброго времени суток всем!
Часто возникает необходимость хранить данные логического типа для определенных таблиц. Например, таблица пользователей, такими данными могут быть поля активация пользователя, блокирование пользователя и др. Для таких полей удобно использовать битовую маску, при которой все данные хранятся в одном поле таблицы. Последнее время работаю с фреймверком Yii. Мне он нравится и во всем устраивает. Так вот, в процессе работы над несколькими проектами у меня появилось ряд наработок для работы с битовой маской под этот фреймверк.
Ими и хочу поделиться.
+21
14 октября 2011, 17:03
44

Единая авторизация пользователей с поддержкой нескольких сервисов

Yii EAuth extension
При реализации одного из проектов на Yii framework у меня возникла задача сделать регистрацию и авторизацию пользователей через сторонние сервисы (Google, Facebook, Twitter, etc).

У данной задачи есть два пути решения:
  • Использовать сервис авторизации, например Loginza;
  • Реализовывать функции авторизации самостоятельно для каждого сервиса.


UPDATE: Актуальная версия и инструкция по настройке доступны на github.com. Инструкция в данной статье подходит для EAuth версии <= 1.1.3.

+124
5 октября 2011, 13:27
309

Шардинг MySQL на Yii Framework

Начну с того, что наш проект находится на начальной стадии развития, а его запуск планируется на 1е ноября. И, чтобы сразу отсечь всю возможную критику касаемо преждевременной оптимизации, скажу, что перед командой была поставлена задача разработать приложение, справляющееся с резкими скачками нагрузки (от 1000 до 50000 и т. п.). В связи с этим было решено закладывать хорошо масштабируемую архитектуру, позволяющую легко и быстро увеличивать производительность системы за счет аппаратной части (по принципу scale-out).

+50
5 октября 2011, 07:39
97

Организация временных зон

Часто, при работе с проектами, мне приходилось реализовывать однотипные задачи, например: организация временных зон на сайте. Сама задача достаточно простая, но хотелось бы все автоматизировать, поэтому я написал небольшое расширение, которое автоматически выставит нужную временную зону атрибутам, название которых содержит «date».
+22
30 сентября 2011, 14:56
41

Расширение yii-debug-toolbar

Доброе время суток хабравчане.

Сегодня я хотел бы рассказать об одном замечательном расширении yii-debug-toolbar от Сергея Малышева.

Вкратце


Это расширение добавляет очень симпатичную и удобную дебаг панель.

yii-debug-toolbar имеет 5 вкладок:
  • Server: отображает информацию из phpinfo();
  • Time: отображает время загрузки страницы, размер затраченной памяти и размер сессии;
  • Globals: отображает дампы глобальных переменных ($_SERVER, $_COOKIE, $_SESSION, $_POST, $_GET, $_FILES);
  • Settings: отображает конфиг приложения (все параметры, компоненты и глобальные настройки);
  • SQL: отображает информацию о SQL сервере и лог по SQL запросам (сам запрос и время исполнения);
  • Logging: отображает лог информацию (отправленную через Yii::log).


+35
29 августа 2011, 10:50
64