Yii is een component based php-framework, met volgens de ontwikkelaars zeer goede prestaties, die het bijzonder geschikt maken voor het ontwikkelen van grootschalige webapplicaties. Het framework bevat tal van opties, zoals mvc, dao/ActiveRecord, I18N/L10N, caching, jQuery-based AJAX support, scaffolding, input validation, widgets, events en theming. Voor meer informatie verwijzen we naar deze pagina. De ontwikkelaars hebben versie 1.1.16 uitgebracht en hierin zijn de volgende veranderingen en verbeteringen aangebracht:
NewEnhanced
- #2955: Added official support for MariaDB
Changed
- Public method CFileHelper::createDirectory() has been added
- Added proper handling and support of the symlinked directories in CFileHelper::removeDirectory(), added $options parameter in CFileHelper::removeDirectory()
- #89: Support for SOAP headers in WSDL generator
- #94: Web services: Implement document/literal encoding for WDSL
- #106: Added getters to CGridColumn to allow getting cell contents for extended use cases of CGridView
- #132: Added ODBC support in CDbConnection
- #182: CSort: allow arrays in asc/desc keys of virtual attributes
- #640: Introduce bigpk and bigint column types in each class extending CDbSchema
- #873: CStatRelation (CActiveRecord::STAT) now supports scopes
- #1372: CDbCommandBuilder::createMultipleInsertCommand() now throws exception if data array is empty
- #1515: Post-JOIN operations (use|force|ignore index()) support in relational queries
- #1593: Allow access to exception currently processed by CErrorHandler
- #1893: Added Schema and native connection support for the CUBRID DBMS (http://www.cubrid.org/)
- #2119: add `y` pattern to CDateTimeParser
- #2540: Enable CJSON to use JsonSerializable interface when serializing objects
- #2630: CLinkPager $nextPageLabel, $prevPageLabel, $firstPageLabel and $lastPageLabel can now be false to disable the buttons
- #2640: Enable diff on gii generated SQL files
- #2664: Added support for HTTP PATCH requests to CHttpRequest
- #2683: Application views generated by webapp command are now using HTML5 by default
- #2688: CHtml::beginForm() now supports additional HTTP methods, via a hidden `_method` field.
- #2722: CFileHelper::findFiles() accepts absolutePaths in $options and returns absolute paths if true or relative ones otherwise (defaults to true)
- #2734: Request::getPreferredLanguage() is now able to select a best matching between supported and requested languages
- #2737: CFileCache: added cachePathMode and cacheFileMode options to set modes used by chmod() for cache directory and files
- #2758: Updated phpdoc in blog demo to match current IDE supported syntax
- #2777: Allow Yii::import() and Yii::createComponent() to import classes that are loaded by other autoloaders e.g. composer
- #2791: requirements/index.php: added CRYPT_BLOWFISH check for CPasswordHelper
- #2799: Add HTML5 input support for color, datetime, datetime-local, week and search to CHtml and CActiveForm
- #2817: Allow specifying $colums and $refColumns arguments as array in various CDbSchema methods
- #2850: Parameter 'id' added for 'ajaxUpdateError' js function at 'CListView' and 'CGridView'
- #2851: Improved Mime-Type detection by using the `mime.types` file from apache http project to dected mime types by file extension
- #2852: Refactored ShellCommand to be easier to extend
- #2908: Add insertMultiple to Migrations
- #3014: Allow changing the database used by ActiveRecord in beforeCount() like it is possible in beforeFind() already
- #3023: Added support for formatting DateTime instances to CFormatter
- #3027: Added custom encodeLabel attributes of the CMenu items
- #3048: CApcCache is now compatible with APCu
- #3049: 'cli' mode detection at CConsoleApplication improved
- #3061: 'jquery.yiiGridView' and 'jquery.yiiListView' allows to handle all update options via history state data
- #3068: Added CDbCommand::naturalLeftJoin() and CDbCommand::naturalRightJoin()
- #3115: Updated phpdoc for better code completion in modern IDEs
- #3147: Updated Request::getIsSecureConnection() to work with lower and uppercase config values
- #3156: It is now possible to override the models PK using primaryKey() method, even if the table defines one
- #3182: Added namespace support for controllers in subdirectories
- #3202: Adding support for the `X-HTTP-Method-Override` header in CHttpRequest
- #3211: Added support for PHPUnit 3.8+ in the bootstrap
- #3222: 'summaryTagName' and 'emptyCssClass' options added to CBaseListView
- #3225: Added CForm::errorSummaryHeader and CForm::errorSummaryFooter, used like in CActiveForm::errorSummary()
- #3228: Added an ability to migrate to the certain time
- #3277: CHtml::checkBoxList and radioButtonList to take into account closeSingleTag for <br>
- #3307: Adding attribute localeClass to CApplication
- #3314: Removed async from special attribute list enabling async=false for scripts
- #3324: Added syslog log route
- #3346: Added `fileHeader` option to MessageCommand
- #3349: Added errorCallback to CActiveForm::$clientOptions
- #3351: Allow array attribute for CFileValidator even if `maxFiles` is not > 1
- #3359: Added merge parameter to CModule::setModules
- #3391: Exception and log for not existed ClientScript package
- #3500: Framework now responds with HTTP protocol version requested
- #3513: Added 'getExtensionByMimeType' method to CFileHelper class
- #3533: Added Yii and YiiBase classes to composer autoloader
- #3571: Extracted rendering of data cell in CGridView.renderTableRow() to separate method for extensibility
- #3623: `itemscope` attribute is now rendered as HTML5 boolean
Bugs fixed
- #2025: Upgraded jQuery to 1.11.1
- #3042: CPasswordHelper::generateSalt() now returns salt with $2y$ cost
- #3137: Upgraded HTMLPurifier to 4.6.0
- #3298: ListView and GridView: Added check for the existence of a href attribute in link pager
- #3464: Updated multifile plugin used by CMultiFileUpload to version 1.48
- #3636: Upgraded jQuery UI to 1.11.2
- Updated the i18n data bundled with the framework to CLDR23.1 <http://cldr.unicode.org/index/downloads/cldr-23-1> this adds new locales and has many fixes and additional data for existing ones
- #264: Fixed wrong timestamp precision value in postgres schema
- #268: Fixed Active Record count error when some field name starting from 'count'
- #788: createIndex is not using the recommended way to create unique indexes on Postgres
- #1257: CFileValidator is no longer unsafe by default to prevent setting arbitrary values. Instead, when no file is uploaded attribute is set to null
- #1635: CDateFormatter::format() with 'ZZZZZ' pattern used to return timezone in RFC 822 format, now returns in ISO 8601 format as it stated in CLDR
- #2235: CPgsqlColumnSchema can't parse default value for numeric field
- #2376: CHttpSession::regenerateID() now checks if session is started before regenerating session ID
- #2378: CActiveRecord::tableName() in namespaced model returned fully qualified class name
- #2519: CGridView and CListView fixed to be able handling special characters if history is enabled
- #2594: CLogRouter::processLogs() now ensures to clear the Logger messages so nothing is logged twice when method is called multiple times
- #2654: Allow CDbCommand to compose queries without 'from' clause
- #2658: CBaseListView, CGridView, CListView: added note about $itemsCssClass and $pagerCssClass properties, they must not contain empty string, null or false values
- #2969: CPgsqlSchema::addColumn() converts column type twice
- #2741: Updated CHtml to add maxlength support to all HTML5 fields
- #2753: Fixed CErrorHandler::errorAction ignored if error occurs while AJAX request
- #2756: Fixed applying condition twice during Active Record relation lazy loading
- #2770: Fixed CClientScript renders scripts with different HTML options inside same tag
- #2778: Fixed throwing unnecessary exception in CFileValidator when validating MIME types for a file upload that failed
- #2785: Use table name with schema in composeMultipleInsertCommand
- #2836: Fixed rendering when try-catching widget Exception while 'captureOutput' is set to true
- #2845: Fixed 1.1.14 regression affecting non-strict comparison in `CRangeValidator` validator
- #2855: Fixed issue with Component::__call() and normal properties holding a Closure
- #2862: Fixed array_merge caused renumbering of $data indexes in CHtml::radioButtonList()
- #2864: Fixed CGridView ajax calls failing CSRF validation when ajaxType is set to POST
- #2874: Fixed duplicate columns selection for HAS_MANY relation with composite primary key
- #2876: Fixed single quotes in comments column causes syntax error in model code generated by Gii(klimov-paul)
- #2884: Fixed problem with table alias in CActiveRecord that has been introduced in 1.1.14
- #2887: Fixed CFormElement is missing __isset()
- #2912: Add options parameter to CListView beforeAjaxUpdate
- #2917: Restored ability to overwrite module alias via application config which was broken in 1.1.14
- #2944: Fixed CDbCriteria fails to merge limit when it is 0
- #2945: Fixed CUrlRule escapes dot (.) symbol on parsing
- #2959: Fixed CFileValidator to encode file name, while composing error messages
- #2963: CAssetManager::generatePath no longer uses basename for hasing
- #2970: Fixed Active Record may join same relation twice on eager loading.
- #3010: Problem with callables given as values to CDetailView. CDetailView now only allows annonymous functions to be called, all other values will be taken as value
- #3064: Fixed problem with array to string converion in CDbMigration methods that accept array parameters
- #3055: CAction::runWithParams() now returns consistent result even if called without parameters
- #3087: Fixed crash on cookie validation when switching between enabling and disabling validation
- #3113: Fixed problems with realpath(false) which can occur in combination with Yii::getPathOfAlias() when alias does not exist
- #3134: Fixed the issue that query cache returns the same data for the same SQL but different query methods
- #3144: It wasn't possible to use attributes with spaces in validation rules
- #3179: Fixed a bug with CBreadcrumbs widget and homelink that did not use activeLinkTemplate property
- #3206: Quote table names in CDbMessageSource::loadMessagesFromDb
- #3233: Gii now allows base classes with absolute namespace as well, not only relative ones
- #3242: Removed display:none on form hidden fields
- #3283: Fixed CEmailValidator to validate empty value
- #3288: Check if PHPUnit_Runner_Version exists before requiring
- #3302: CActiveForm::error() fixed to respect 'hideErrorMessage' option on regular render
- #3305: COciSchema column comment reading from another schema
- #3321: Clear stat cache after rotating log files so later file size check is not cached
- #3327: Gii did not generate empty directories properly
- #3406: Fixed Object of class Imagick could not be converted to string
- #3410: Fixed wrong translation parameter name in CPhpAuthManager::addItemChild()
- #3569: CConsoleCommand::copyFiles() did not replace DIRECTORY_SEPARATOR correctly
- #3582: make sure `build autoload` produces the same output on both Windows and Unix platforms
- Fixed the bug that backslashes are not escaped by CDbCommandBuilder::buildSearchCondition()
- Fixed URL parsing so it's now properly giving 404 for URLs like "http://example.com//////site/about/////"
- Fixed an issue with CFilehelper and not accessable directories which resulted in endless loop
- CSecurityManager encryption and string comparison were enhanced