Очевидно, что в этом году график выхода версий фреймворка намного поспокойнее. Зато теперь каждый релиз приносит гораздо больше исправлений ошибок и добавлений новых возможностей.
В новой, только что вышедшей, версии 1.1.2 мы имеем порядка 20 багфиксов и 30 улучшений или нововведений.
Отдельно необходимо отметить новый модуль под названием Gii, который включен в дистрибутив.
То, что раньше делалось с помощью утилиты yiic, теперь с легкостью можно сделать прямо в браузере. Этот модуль предоставляет возможность для генерации кода не из командной строки, а в браузере, что конечно же гораздо удобнее.
В Gii исходно включено несколько генераторов (и их количество можно расширять), каждый из которых отвечает за генерацию кода своего типа. Например, генератор контроллера производит код класса контроллера вместе с несколькими view-файлами, а генератор модели создает ActiveRecord-класс для определенной таблицы в БД.
Типичные действия при использовании генератора:
Более подробную информацию, а также инструкции по подключению модуля читайте в документации.
В новой, только что вышедшей, версии 1.1.2 мы имеем порядка 20 багфиксов и 30 улучшений или нововведений.
Рассмотрим самые примечательные:
- Добавлена возможность «на лету» управлять отношениями в моделях ActiveRecord.
Для этого добавлено три метода:- CActiveRecordMetaData::addRelation($name, $config) для добавления отношения, где $name — название отношения, $config — массив с параметрами отношения, как это используется при перегрузке метода CActiveRecord::relations()
- CActiveRecordMetaData::hasRelation($name) для проверки существования отношения с заданным именем
- CActiveRecordMetaData::removeRelation($name) для удаления отношения.
- Добавлен метод CActiveRecord::resetScope() позволяющий сбрасывать все использованные в цепочке именованные группы условий (scopes) включая группу условий по умолчанию.
- Добавлен метод CModel::getValidatorList() для гибкого управления валидаторами модели «на лету».
- В метод CBaseController::widget() добавлен третий параметр, который позволяет не выводить результаты работы виджета сразу на экран, а возвращать, например, для сохранения в переменную. Подобным образом, как это делает CController::render() и другие рендер-методы.
- CCaptchaAction теперь поддерживает неограниченное количество попыток ввода установкой свойства testLimit равным нулю.
- В CAssetManager::publish() добавлен четвертый параметр, который включает принудительное копирование ресурсных файлов и директорий из исходного места в публикуемую директорию даже если они были опубликованы до этого. Этот параметр стоит использовать преимущественно только во время разработки, когда исходные файлы ресурсов постоянно правятся.
- Создан еще один класс для кеширования. Теперь можно использовать WinCache с помощью класса CWinCache. Естественно, для этого в PHP должно быть включено соответствующее расширение.
- Появилась возможность совмещать обычные шаблоны PHP-native и специальные шаблоны настраиваемые через дополнительные классы (например, CPradoViewRenderer)
- CTypeValidator теперь поддерживает проверку не только одиночных переменных, но и содержимого массивов.
- Добавлен метод CFileHelper::getExtension для определения расширения файла.
- Улучшения в CDbCriteria:
- Исправлена ошибка, которая раньше делала невозможным объединение двух условий с параметрами.
- Также в CDbCriteria::select названия полей теперь можно обрамлять кавычками при сложных запросах.
- Добавлен метод CDbCriteria::addBetweenCondition(), который позволяет удобно добавлять в sql-запрос конструкции вида «column BETWEEN a AND b».
- Исправлена ошибка, которая раньше делала невозможным объединение двух условий с параметрами.
- Добавлен украинский перевод сообщений.
- Создана функция CHttpSession::get(), которая возвращает значение переменной сессии по ее имени. Эта функция очень похожа на CHttpSession::itemAt(), за исключением того, что может возвращать значение по-умолчанию, если переменная сессии с заданным именем не определена.
Модуль Gii
Отдельно необходимо отметить новый модуль под названием Gii, который включен в дистрибутив.
То, что раньше делалось с помощью утилиты yiic, теперь с легкостью можно сделать прямо в браузере. Этот модуль предоставляет возможность для генерации кода не из командной строки, а в браузере, что конечно же гораздо удобнее.
В Gii исходно включено несколько генераторов (и их количество можно расширять), каждый из которых отвечает за генерацию кода своего типа. Например, генератор контроллера производит код класса контроллера вместе с несколькими view-файлами, а генератор модели создает ActiveRecord-класс для определенной таблицы в БД.
Типичные действия при использовании генератора:
- Войти на страницу генератора.
- Заполнить форму с параметрами для генерации. Например, при использовании генератора модулей, чтобы создать новый модуль, нужно ввести название (идентификатор) модуля.
- Нажать кнопку «Предварительный просмотр», чтобы увидеть какие файлы будут созданы и, кликнув по любому из них, просмотреть их содержимое.
- Нажать кнопку «Генерировать» для непосредственного создания файлов.
- По желанию просмотреть лог-файл с описанием всех действий произведенных при генерации нового кода.
Более подробную информацию, а также инструкции по подключению модуля читайте в документации.