Каталог расширений yii1 и yii2 - yiigist.com

Приветствуем, уважаемые читатели!

Хорошие новости для тех, кто ждёт каталог расширений для yii2. Не дождавшись официального сайта, наша команда рада представить свой вариант — yiigist.com.

На данный момент каталог поддерживает только пакеты yii 1.* и yii 2.* опубликованные в packagist.org и расположенные на github.com. Это должно покрыть 80% всех потребностей.

Если вам потребуется новый функционал, или вы встретите ошибку на сайте, смело пишите в форму обратной связи или на почту support@yiigist.com

Надеемся, наше решение вам понравится!

С уважением, команда PHPTime. Приятного кодинга!

Релиз Yii 1.1.14

Yii frameworkДолгожданный релиз Yii Framework 1.1.14 состоялся! Среди изменений есть много интересного. Например класс для хеширования и проверки пароля или поддержка redis в качестве сервера хранения кеша.

Обзор основных фич на хабре.
Полный changelog.
Забираем на Github.

Публичное превью Yii 2

Дождались!

Спустя более двух лет разработки стала доступна для скачивания превью Yii 2!

Yii 2

Работа над новым фреймворком идет полным ходом. Напомню, что у Yii 2 не будет обратной совместимости с Yii 1.x. В официальном анонсе разработчики призывают не пользоваться фреймворком в продакшене.

Это превосходная новость для всего сообщества. Я лично пошёл пробовать.

Дополнительная информация:

Поведение и события

Оригинал: Behaviors & events

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

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

Инструкции по созданию имен для CSS

Оригинал: CSS Naming Conventions

В этой статье мы представляем набор правил по созданию CSS-имен. Они уже были испытаны в нескольких крупных проектах. Это помогло нам достигнуть определенных успехов. Цель инструкции — исключить возможность конфликтов имен, упрощения отладки, обслуживания и процесса присвоения названий.

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

CSS-класс и имя файла

Используйте строчные буквы в названиях всех CSS-классов и файлов. Для разделения слов в имени используйте символ «-». Например, мы можем назвать классы как-то вроде widget-latest-comments, а файлы — post.css.

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

Как разобраться в иерархической системе RBAC

Оригинал: Getting to Understand Hierarchical RBAC Scheme

Authentication and Authorization — это хороший учебник, в котором, помимо прочих тем, описываются основные аспекты реализации иерархической системы RBAC в Yii. Но сколько я ни читал этот толковый учебник, я не мог понять, как именно работает иерархия. Я нашел, как определить авторизацию иерархии, как оцениваются правила управления, как настраивается authManager, но почти ничего не обнаружил о том, как строить свою иерархию, в какой последовательности проверяются ее узлы, когда проверка останавливается, и каков будет результат проверки.

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

Я должен сказать, что понять смысл статьи было бы намного проще, если бы вы ознакомились с вышеупомянутым учебником. Особенно начиная с темы Role-Based Access Control.
Давайте рассмотрим пример иерархии, который приведен в учебнике (здесь показано, как система безопасности может быть построена для некоторых блогов):

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

Руководство для проектирования хорошей схемы базы данных

Оригинал: Guidelines for good schema design

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

Первый и наиболее важный момент заключается том, что Yii-приложения широко
используют шаблон ActiveRecord. Исходя из этого, все конструктивные соображения
направлены на оптимизацию такого использования, а не на человека, который будет
составлять сложные SQL-запросы. В самом деле, многие из проектных решений напрямую
конфликтуют с передовой практикой для создания дружественных SQL-схем.

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

Это особенно верно, в случае если вы просите о помощи на форумах или на канале #yii:
использование неподходящих имен, которые не отражают смысла, порождает много
вопросов и уточнений. Вы получите меньше справочной информации, чем могли бы.

Согласованность играет очень большую роль.

Тем не менее, это всего лишь рекомендации, а не правила, и ваш код будет работать, даже
если вы не последовали им. Принимая рекомендации, вы облегчите себе жизнь.

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

Создание своего правила валидации (validation rule)

Оригинал: Create your own Validation Rule

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

Быстрый способ

Самый простой способ создать новое правило проверки, это написание специального метода внутри модели, в которой он будет использоваться.

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

Прежде всего в вашем классе модели вам придется добавить две константы:
const WEAK = 0;
const STRONG = 1;


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