Compare commits

...

419 Commits

Author SHA1 Message Date
Daniel Becker Alves 1d20db57e6
Fixing typo (#19269) 3 years ago
Ihor Sychevskyi adf8af42ee
update links (id, it lang) (#19258) 3 years ago
Ihor Sychevskyi 19c978fc8a
update links (es, fr) (#19245) 3 years ago
Anton 3203353a38
Remove code duplication in `ActiveRecord::attributes()` 3 years ago
Long TRAN 7b8c29d874
Fix #19243: Handle `finfo_open` for tar.xz as `application/octet-stream` on PHP 8.1 3 years ago
jef348 9bf7c96f26
Update db-active-record.md (#19250) 3 years ago
Ar Rakin 4d90778861
Fix bug #19235 (#19247) 3 years ago
Ihor Sychevskyi 3c6805e384
Update links (ar) (#19230) 3 years ago
Anton cb5e180695
Fix PhpDoc of `yii\db\pgsql\QueryBuilder::normalizeTableRowData()` (#19234) 3 years ago
AIZAWA Hina f248d88841
Fix a typo in a Japanese doc (#19232) 3 years ago
Ihor Sychevskyi 9bcc8c8e83
update links (en) (#19222) 3 years ago
Alexander Makarov 7fd85d2268
Fix MimeTest 3 years ago
Alexander Makarov 200d8b87d5
prepare for next release 3 years ago
Alexander Makarov 0792736b35
release version 2.0.45 3 years ago
Roman Grinyov aa61a7b77a
clarification added (#19220) 3 years ago
Ihor Sychevskyi 2861121a67
update boolean attributes link (#19216) 3 years ago
Alexander Makarov 9fbdc9f01b
Fix #18821: Additional type fixes (#19217) 3 years ago
ntesic 730f0e56b5
Fix #18821: Allow `yii\db\ExpressionInterface` as column in `yii\db\conditions\InBuilder` 3 years ago
Long TRAN 71e810c89d
Fix #19130: Fix DbSession breaks in some case 3 years ago
Sartor 7a2689e761
Fix #19004: Container::resolveCallableDependencies() unable to handle union and intersection types 3 years ago
Long TRAN 6a36fa82c7
Fix #19047, fix #19118: Fix deprecated preg_match() passing null parameters #2 in db\mysql\Schema.php 3 years ago
Ihor Sychevskyi b75201768e
update APC link (#19210) 3 years ago
Long TRAN cf1600411c
Fix #19204: Support numbers in Inflector::camel2words 3 years ago
Ihor Sychevskyi 9965b8f0a4
update ICU manual link (#19201) 3 years ago
Ihor Sychevskyi 9a96e19660
update ICU site link (#19196) 3 years ago
Bizley 60c91eb433
Fix BC introduced in #19188 (#19194) 3 years ago
Ihor Sychevskyi 55de865dcf
update ICU library link (#19190) 3 years ago
Bizley dbb157fd32
Fix #19187: Fix `yii\filters\PageCache` to store original headers names instead of normalized ones 3 years ago
Dmitrijlin 0eaa71d46c
Fix #19191: Change `\Exception` to `\Throwable` in `BadRequestHttpException` and `HttpException` 3 years ago
twinpigs acdd8894dc
Fix incorrect translation in Russian tutorial-start-from-scratch.md (#19193) 3 years ago
rhertogh e691713ed7
Fix #19171: Added `$pagination` and `$sort` to `\yii\rest\IndexAction` for easy configuration 3 years ago
Ihor Sychevskyi 627d65603a
update rules reference link (#19181) 3 years ago
Roman 437b0d51aa
Fix #19182: RBAC Migration failed when use oracle with oci8 3 years ago
Aurélien Chretien ebb1d8bc60
Fix #19178: Fix null value in unserialize for PHP 8.1 (#19178) 3 years ago
Aurélien Chretien 942e726a8d
Fix #19176: Add #[\ReturnTypeWillChange] on MSSQL classes (#19177) 3 years ago
stevekr 67ea4cf968
Fix #19148: Fix undefined array key errors in `yii\db\ActiveRelationTrait` 3 years ago
Ihor Sychevskyi d2718f38bb
update numbering schemas link (#19170) 3 years ago
charescape f555fce82b
Fix typo (#19168) 3 years ago
Alexander Makarov 1271bc419f
Fix #19041: Fix PHP 8.1 issues 3 years ago
Ihor Sychevskyi 4bd551d143
update formatting reference link (#19164) 3 years ago
Alexey Rogachev be051d6ee0
Fix making a guide-2.0 for the website (#19159) 3 years ago
Ihor Sychevskyi b71b6657c8
update formatting reference link (#19157) 3 years ago
ntesic e68b7ae162
Fix #19138: Allow digits in language code 3 years ago
Ihor Sychevskyi 02ad96fa83
update ICU API reference link (#19143) 3 years ago
Bilal e353835cc5
Fixed typo (#19134) 3 years ago
Ihor Sychevskyi 0167c9b961
update ICU documentation link (#19128) 3 years ago
Ihor Sychevskyi 34a25a5c67
update documentation of the ICU project link (#19125) 3 years ago
Alexander Makarov d7aec6b8e7
prepare for next release 3 years ago
Alexander Makarov 655786b7ed
release version 2.0.44 3 years ago
Alexander Makarov fe7f5ed0fa
Use https in composer.json for yiiframework.com 3 years ago
Alexander Makarov 214746c737
Adjust CHANGELOG messages 3 years ago
Bizley 12763a146e
Fix #19067: Fix constant session regeneration (#19113) 3 years ago
Ihor Sychevskyi 8c8676329a
update download page link (#19115) 3 years ago
Alexander Makarov e459214a92
Add symfonymailer to list of extensions 3 years ago
Anton 6fb16bc30f
Fix #19098: Add `yii\helper\BaseHtml::$normalizeClassAttribute` to fix duplicate classes 3 years ago
irice 02fe7f42c8
Fix #18660: Check name if backslash appears 3 years ago
Ihor Sychevskyi 25fd9608d3
Fix #19110: Update docker.com link (#19111) 3 years ago
Anton cccb65a70d
Fix #19108: Optimize `Component::hasEventHandlers()` and `Component::trigger()` 3 years ago
Ihor Sychevskyi 02cc8d9fa9
update common media types link (#19106) 3 years ago
Anton 8e0e5ad814
Fix #19096: Fix `Request::getIsConsoleRequest()` may return erroneously when testing a Web application in Codeception 3 years ago
Alexander Makarov 7d01805cd6
Revert "Fix ci-mssql.yml (#19102)" 3 years ago
Anton 965f776273
Fix build.yml (#19104) 3 years ago
Anton 53a9953ebb
Fix ci-mssql.yml (#19102) 3 years ago
Ihor Sychevskyi 091af40298
Fix #19095: Update broken ICU manual link (#19097) 3 years ago
Ihor Sychevskyi 3820b3406e
Fix #19086: Update HTTP Bearer Tokens link (#19087) 3 years ago
Alexey Rogachev 08da35e511
(Docs) Added missing close tag for span (#19081) 3 years ago
Alexey Rogachev 36ef753385
Fixed rendering of Apache config snippet in ru guide [skip ci] (#19080) 3 years ago
Ihor Sychevskyi 0c79f1b80b
Update CORS Preflight requests link (#19078) 3 years ago
Ihor Sychevskyi 17f0ad7aa1
Update RFC 7232 links (#19069) 3 years ago
Alexey Rogachev 58ac2e134e
Fix bugs preventing generation of PDF guide [skip ci] (#19076) 3 years ago
Anton 6067608321
Fix #19005: Add `yii\base\Module::setControllerPath()` 3 years ago
Alexey Rogachev 1e41533789
(Docs) Normalized existing "virtual" / "magic" methods' descriptions, add missing ones (#19066) 3 years ago
Ihor Sychevskyi 5671a0e176
update MySQL link (#19063) 3 years ago
Ihor Sychevskyi dcd1810d87
update PHP XCache link (#19058) 3 years ago
Alexey Rogachev 6c9eb1a90c
(Docs) Fixed preview for $prepareDataProvider (#19055) 3 years ago
Anton 766cf701e5
Fix #19031: Fix displaying console help for parameters with declared types 3 years ago
Papp Péter 0d899fa18b
Fix #19030: Add DI container usage to `yii\base\Widget::end()` 3 years ago
Anton d52c1237ca
Update Controller phpdoc (#19052) 3 years ago
Ihor Sychevskyi 73bb0e2569
update APC extension link (#19051) 3 years ago
ptolomaues 17aa0e40c1
Fix #13105: Add yiiActiveForm validate_only property for skipping form auto-submission 3 years ago
Alexey Rogachev 4a8c72f0c4
Normalize todos (#19045) 3 years ago
Alexey Rogachev 717a883d58
Fix #19042: Fix broken link (https://owasp.org/index.php/Top_10_2007-Information_Leakage) (#19043) 3 years ago
AnkIF 6aa5bd8d46
Fix #18967: Use proper attribute names for tabular data in `yii\widgets\ActiveField::addAriaAttributes()` 3 years ago
Ihor Sychevskyi 7d789bd0a6
update Exception Handling link (#19035) 3 years ago
rhertogh 81a3b83995
Fix #19021: Fix return type in PhpDoc `yii\db\Migration` functions `up()`, `down()`, `safeUp()` and `safeDown()` 3 years ago
Ihor Sychevskyi e00b6d607d
update SameSite link (#19029) 3 years ago
Alexey Rogachev 552593ca3b
Prepare for new apidoc (part 2) (#19010) 3 years ago
Ihor Sychevskyi ac454a90d1
update csrf link (#19023) 3 years ago
Ihor Sychevskyi 8585ba3a18
update SQL Injection link (#19015) 3 years ago
Anton c8d027f649
Fix #18993: Load defaults by `attributes()` in `yii\db\ActiveRecord::loadDefaultValues()` 3 years ago
Anton 533b569005
Fix PhpDoc of `ActiveField` (#19001) 3 years ago
John Goetz 74e3cc9d08
Update core-code-style.md (#19008) 3 years ago
Alexey Rogachev fa6f0ef658
Fix variable references in phpdoc (#19006) 3 years ago
Marco van 't Wout 53477e8ad9
Correct note about html encoded items in radio/checkboxlist (#19007) 3 years ago
Ihor Sychevskyi db8de0e57f
update Cross Site Scripting link (#19002) 3 years ago
Ihor Sychevskyi 1a571f2c4b
update code Injection link (#18999) 3 years ago
Anton 03235e6c12
Fix #18988: Fix default value of `yii\console\controllers\MessageController::$translator` 3 years ago
Anton 4c1f872320
Improve ArrayAccess phpdoc in yii\base\Model (#18992) 3 years ago
Raphael de Almeida 1c082f746f
Brazilian Portuguese translation of the Helpers Overview (#18996) 3 years ago
Ihor Sychevskyi 817f956013
update Command Injection link (#18989) 3 years ago
Sohel Ahmed Mesaniya 4b3361bf02
Docs enhancements (#18985) 3 years ago
Ihor Sychevskyi 577b68b7d5
update Data Validation link (#18980) 3 years ago
Anton 480ae53f6d
Fix migration command example in BaseMigrateController (#18978) 3 years ago
Anton 97f9fba7e9
Fix #18962: Extend ignore list in `yii\console\MessageController::$except` 3 years ago
Aleksandr Bogatikov e294c23102
Fix#18328: Yii::warning() raised on file register after View::endBody() has been moved to View::endPage() (#18975) 3 years ago
Aleksandr Bogatikov d27fb96409
StringHelper::dirname() fixed for trailing slash (#18965) 3 years ago
Ihor Sychevskyi baa3a0ed8a
update NIST RBAC model link (#18973) 3 years ago
Aleksandr Bogatikov b757d25c4b
Fix #18328: Raise warning when trying to register a file after `View::endBody()` has been called 3 years ago
Anton 6fdba043d7
Update Session.php (#18969) 3 years ago
Anton dd1ed636ae
Remove redundand comments in `PhpDocController` (#18968) 3 years ago
Anton d80974da30
Fix #18955: Check `yiisoft/yii2-swiftmailer` before using as default mailer in `yii\base\Application` 3 years ago
Alexander Makarov 685b38c50f
Update PR template (#18963) 3 years ago
Bizley f5973acd08
Fix JA guide page (#18958) 3 years ago
Bizley 0041f034fd
[doc] Update PHP doc links (#18957) 3 years ago
Ihor Sychevskyi b22bcaebfd
update date() link (#18956) 3 years ago
Bizley ae82b58d85
Fix #18909: Fix bug with binding default action parameters for controllers 3 years ago
Ihor Sychevskyi e22bece3df
update max_file_uploads link (#18953) 3 years ago
Ihor Sychevskyi 8032cbdb43
update DOMLint link (#18946) 3 years ago
Ihor Sychevskyi 54664471e4
Update db-active-record.md interface link (#18944) 3 years ago
Toir Tuychiev 728e910baf
Typo PHPDoc (#18939) 3 years ago
Ihor Sychevskyi 71892888b0
Update db-query-builder.md (#18938) 3 years ago
Chris Smith 239434f395
Update db-query-builder.md (#18934) 3 years ago
BIKI DAS 14a28ab4f4
docs improvment (#18935) 3 years ago
Ihor Sychevskyi bb24645fe8
Docs: Update interface link (#18931) 3 years ago
BIKI DAS 7cca296a5e
Framework(Baseyii.php) -----> fixed typos and improved doc (#18927) 3 years ago
Anton 0181a49bb4
Fix phpdoc in BaseFileHelper (#18928) 3 years ago
Anton ccf979196c
Fix yii\i18n\GettextMessageSource PHPDoc (#18916) 3 years ago
BIKI DAS e078c9422f
Fix typos 3 years ago
Toir Tuychiev 3578621833
Shorten two identical statements in compare validator (#18922) 3 years ago
Anton f7c81fb044
Fix BaseMigrateController::$migrationPath phpdoc (#18924) 3 years ago
JT Smith c3eeb952b9
[docs] typofixes (#18920) 3 years ago
Mario Simão 175f66e6e0
Fix #18908: Add stdClass as possible return type to getBodyParams (#18918) 3 years ago
Mario Simão 2c3f5d990c
Fix #18733: Fix session offset doc types (#18919) 3 years ago
Oleg Poludnenko 01b6b2a5d1
Fix #18913: Add filename validation for `MessageSource::getMessageFilePath()` 3 years ago
Ihor Sychevskyi 435b6dc732
update prepared statements link (#18911) 3 years ago
Alexander Gubarev e3028c524d
Fix #18899: Replace usages of `strpos` with `strncmp` and remove redundant usage of `array_merge` and `array_values` 3 years ago
hexkir f2caf02164
Fix #18904: Improve Captcha client-side validation 3 years ago
Ihor Sychevskyi 51db399769
update PHP manual link (#18905) 3 years ago
Michaël Arnauts 1d7f9d8d2d
Fix #18898: Fix `yii\helpers\Inflector::camel2words()` to work with words ending with 0 3 years ago
Basil f8e65d2027
Fix @since tag in XmlResponseFormatter.php (#18901) 3 years ago
Alexander Gubarev 7332cc2cba
Fix an invalid phpDoc annotation of `yii\data\DataProviderInterface::getSort()`. (#18897) 3 years ago
Ihor Sychevskyi cf0966cc8f
Update oracle link (#18896) 3 years ago
Anton fdbdbb51fb
Fix #18886: Fix default return of `yii\db\Migration::safeUp()` and `yii\db\Migration::safeDown()` 3 years ago
Anton 4e5c95f8f1
Fix PhpDoc of `yii\console\Controller::stderr()` (#18885) 3 years ago
Ihor Sychevskyi 0f8d5c3852
update PDO link (#18889) 3 years ago
Anton 6b8b0a94d9
Fix phpdoc of yii\base\Model 3 years ago
Anton d6632a8367
Fix phpdoc of `yii\base\Model` (#18888) 3 years ago
rhertogh f3956a4eec
Fix header collection from array (#18883) 3 years ago
Leo 9ed87a0ad6
Fix #18858: Reduce memory usage in `yii\base\View::afterRender` method 3 years ago
rhertogh 59eb9a3395
Fixed ArrayHelper::toArray for DateTime (#18880) 3 years ago
Ihor Sychevskyi f34bc3bf18
update namespace links (#18881) 3 years ago
Ihor Sychevskyi d7b8ab9bee
update class autoloading mechanism link (#18874) 3 years ago
Ihor Sychevskyi b5b1531935
update traits link (#18870) 3 years ago
Bizley ea60fba0ae
Fix yii\base\Controller::bindInjectedParams() to not throw error when argument of `ReflectionUnionType` type is passed (#18869) 3 years ago
Anton 932806b97d
Fix #18812: Added error messages and optimized "error" methods in `yii\helpers\BaseJson` 3 years ago
Ihor Sychevskyi c86cfb66d3
update PHP callback link (#18864) 3 years ago
Anton ffe7904d80
Minor tests cleanup (#18811) 3 years ago
Anton ac373c06fe
Fix #18845: Fix duplicating `id` in `MigrateController::addDefaultPrimaryKey()` 3 years ago
Oscar Barrett 4f387d05c1
Fix #17119: Fix `yii\caching\Cache::multiSet()` to use `yii\caching\Cache::$defaultDuration` when no duration is passed 3 years ago
Ihor Sychevskyi ab1c653fb7
Add optimisticLock to all guide languages (#18860) 3 years ago
Senthil Nathan 83b4191e6c
Optimistic locking update (#18857) 3 years ago
Francisco Budaszewski Zanatta f7f3934226
Remove typo in pt-BR migration docs (#18855) 3 years ago
Ihor Sychevskyi 17581aace3
update SecureFlag wiki article link (#18853) 3 years ago
Jaak Tamre 0b29ba870e
Fix #18762: Added `yii\helpers\Json::$keepObjectType` and `yii\web\JsonResponseFormatter::$keepObjectType` in order to avoid changing zero-indexed objects to array in `yii\helpers\Json::encode()` 3 years ago
Anton ec07ad9ff9
Fix #18783: Add support for URI namespaced tags in `XmlResponseFormatter`, add `XmlResponseFormatter::$objectTagToLowercase` option to lowercase object tags 3 years ago
Ihor Sychevskyi bcd5b48492
update HttpOnly wiki article link (#18851) 3 years ago
Ihor Sychevskyi 07d7b20b01
update Nginx: X-Accel-Redirec link (#18848) 3 years ago
Alexander Makarov 489a543b10
Use ircs as IRC protocol 3 years ago
Bizley 44388e2cf9
Revert changes in dispatcher 18841 (#18843) 3 years ago
lexizz 383241f65c
Fix #18840: Fix `yii2/log/Logger` to set logger globally 3 years ago
Alexander Makarov 3387d360b0
Do not mention yii2-codeception as it it deprecated 3 years ago
Evgeniy Tkachenko df6e5869bd
docs: update RFC 7239 link (#18839) 3 years ago
Anton b7943c6732
Fix #18823: Rollback changes #18806 in `yii\validators\ExistValidator::checkTargetRelationExistence()` 3 years ago
Ihor Sychevskyi d14d65d9f4
fix invalid link & update (#18835) 3 years ago
Bizley c21322f0c6
Added missing note for $categoryMap (#18834) 3 years ago
Brandon Kelly 63e93ba243
Fix #18832 - Inflector::camel2words() adding extra spaces (#18833) 3 years ago
Andrew 463a67bc73
Add ability to turn the sorting off for a clicked column in GridView with multisort (#18826) 3 years ago
Michael Härtl c94d7049c5
Issue #18646 Cleanup auth data from session if findIdentity() returns… (#18649) 3 years ago
Safuan 1b1f257283
Fix typo in Russian translation of concept-behaviors.md (#18825) 3 years ago
Ihor Sychevskyi 9a0c2c25e2
update mongodb link (#18824) 3 years ago
Alexander Makarov fdb897a343
Fix typo in release controller 3 years ago
Alexander Makarov 43f6a79e55
prepare for next release 3 years ago
Alexander Makarov 540a9011af
release version 2.0.43 3 years ago
Alexander Makarov 5f3b3eb96d
Fix typo in UPGRADE 3 years ago
Alexander Makarov 2bfe51c6c7
Rollback #18532: Do not autoload tests/bootstrap.php since new Composer tries to do so for ./build/build as well 3 years ago
Alexander Makarov e1fe04901a
Adjust changelog 3 years ago
Bizley c8e4e0727a
Fix #18674: Added more user-friendly exception messages for `yii\i18n\Formatter` 3 years ago
Alexander Makarov 13f27e4d92
Fix #18817: Use `paragonie/random_compat` for random bytes and int generation 3 years ago
Ihor Sychevskyi 200e1ba718
Update Elasticsearch link (#18816) 3 years ago
Anton c5f8d7df20
Fix #18807: Fix replacing source whitespaces and optimize code of `yii\helpers\BaseStringHelper::mb_ucwords()` 3 years ago
Bizley f35f53eaf8
Preventing breaking profiling messages when flushing (#18800) 3 years ago
Allan c905c10c93
Document that link() will not trigger events/behaviors (#18683) 3 years ago
Anton 7ebaaf0216
Fix #18789: Added JSONP support in `yii\web\JsonParser::parse()` 3 years ago
Alexander Makarov 38ba100320
Add Bootstrap 5 to the list of extensions 3 years ago
Bizley 6df68e0900
Merge pull request #18806 from WinterSilence/patch-11 3 years ago
Bizley e1430fd449
Merge branch 'master' into patch-11 3 years ago
Nobuo Kihara c3ce7652f5
Japanese document updated (#18809) 3 years ago
Anton 1474e2d61a
Optimize `yii\validators\ExistValidator` 3 years ago
DrDeath72 be1b98b1df
Fix #18756: Fix `\yii\validators\ExistValidator::queryValueExists` to validate against an array of unique values 3 years ago
Ihor Sychevskyi ca50dd0bc7
fix core framework code style link (#18805) 3 years ago
Alexander Makarov 1a057444ab
Update URLs (#18802) 3 years ago
Ihor Sychevskyi 88e942821c
update composer asset plugin link (#18797) 3 years ago
Bizley fb7bc9fa5c
Fix #18274: Fix `yii\log\Logger` to calculate profile timings no matter the value of the flush interval 3 years ago
Anton 9607d0eb52
Small fixes in `yii\helpers\BaseStringHelper` (#18795) 3 years ago
Anton 86d7e95077
Minor enhancements for JsExpression (#18793) 3 years ago
Ihor Sychevskyi 9b2720e664
Update links (#18790) 3 years ago
Anton 22c7cef869
Fix PhpDoc in yii\db\Query (#18752) 3 years ago
Anton d9928455e3
Fix PhpDoc for yii\db\{QueryInterface,Query} (#18753) 3 years ago
Mark Huot 25c0e6dcad
Fix #18656: Added ability for `yii serve`'s `--router` param to take an alias 3 years ago
Bizley b4bdd6ef9f
PL Guide updates (#18787) 3 years ago
Yura a7ff413377
Fix typo in Russian translation of the guide 3 years ago
Sohel Ahmed Mesaniya fd7373f1c6
Make docs gender agnostics (#18781) 3 years ago
Ihor Sychevskyi f8e37eb48b
update fontawesome link (#18780) 3 years ago
Ihor Sychevskyi 5c80accf0b
update twig link (#18774) 3 years ago
Bizley 0d07f69c3c
Merge pull request #18775 from kayw-geek/master 3 years ago
Kay W 6685d2f496
Change the link protocol to HTTPS 3 years ago
Bizley 9064e9512f
Merge pull request #18766 from yiisoft/upd 3 years ago
Arhell 7374d4ac5c update http to https website links 3 years ago
Bizley af29687f5f
Merge pull request #18764 from yiisoft/upd 3 years ago
Arhell e1bcfe7e15 update composer.json links 3 years ago
Ihor Sychevskyi 2147029615
update structure block (#18760) 3 years ago
Bizley 6b1f70b883
Merge pull request #18754 from stevekr/formatter-type-fix 3 years ago
Bizley 49a88aa090
Merge branch 'master' into formatter-type-fix 3 years ago
Ihor Sychevskyi fd99eb6c8b
update yii forum & chat link (#18751) 3 years ago
Steve 4276eb4955 Fix $value parameter types in yii\i18n\Formatter::normalizeDatetimeValue() 3 years ago
Sergei Predvoditelev 8cc9aeb2f0
Fix #18749: Fix `yii\web\ErrorHandler::encodeHtml()` to support strings with invalid UTF symbols 3 years ago
egorrishe 17742cb146
don't convert int to string if db type of column is numeric (#18741) 3 years ago
Bizley 8d43241499
Merge pull request #18747 from mrblc/mrblc-fix-croatian-file-validation-messages 3 years ago
mrblc 661f7318a1 Fixed tipfellery and inconsistencies regardin file translation for file validation messages in Croatian 3 years ago
Brandon Kelly 725057c273
Fix #18734: Added `yii\validators\EmailValidator::$enableLocalIDN` 3 years ago
Bizley 9d56179e9d
Updated asUrl method to not introduce BC break (#18742) 3 years ago
Ihor Sychevskyi c318536cc3
update forum link (start-looking-ahead.md) (#18744) 3 years ago
Alexandru Bucur 2fe03cd82c
Only log the $_SERVER information under YII_DEBUG (#18707) 3 years ago
Bizley c43a168a31
Fix #18712: Added `$scheme` option to `yii\i18n\Formatter::asUrl()` 3 years ago
egorrishe 87849c640f
Fix #18737: Fix SchemaTest::testColumnSchema() for MySql <5.7 3 years ago
Sergei Predvoditelev aad14cabc9
Adopt readme logo to dark theme (#18739) 3 years ago
olegbaturin e83a86fd30
Fix #18648: Fix `yii\web\Request` to properly handle HTTP Basic Auth headers 3 years ago
Ihor Sychevskyi 9a9b722d52
update IRC chat (#18736) 3 years ago
rhertogh db39f7c955
Json pretty print (#18726) 3 years ago
Bizley b9cd4c14ef
Merge pull request #18731 from yiisoft/fix-book-link 3 years ago
Arhell be4faf6018 fix books link & update code block 3 years ago
Bizley 02626834a5
Merge pull request #18728 from AlexOConnorHub/patch-2 3 years ago
Bizley 60327cce22
Merge branch 'master' into patch-2 3 years ago
AlexOConnorHub 1affade837
Update docs/guide/security-passwords.md 3 years ago
Bizley ffb13fb4db
Merge pull request #18727 from yiisoft/single 3 years ago
AlexOConnorHub c542ee14ad
Update security-passwords.md to more correct word 3 years ago
Arhell f29f8a279b single style to structure block (start-workflow.md) 3 years ago
Bizley ef9322a4e8
Merge pull request #18725 from marcovtwout/allow-jquery-3.6 3 years ago
Marco van 't Wout 3cc1201d7b Allow jQuery 3.6 to be installed 3 years ago
Bizley d8df7761a5
Merge pull request #18722 from winternet-studio/patch-3 3 years ago
Allan 8a48339e35
Added example with hyphen in action ID 3 years ago
Bizley fdec25b089
Merge pull request #18721 from yiisoft/update-info 3 years ago
Arhell da32669310 update info block all .md (uz) 3 years ago
Bizley 565fa18951
Merge pull request #18719 from yiisoft/fix-info 3 years ago
Arhell b0b4dd4795 update info block in start-hello.md 3 years ago
Bizley 7e3aa221ea
Merge pull request #18716 from RodrigoDornelles/patch-1 3 years ago
RodrigoDornelles dac40facec
Merge branch 'master' into patch-1 3 years ago
Bizley e2b90b5f3e
Merge pull request #18713 from dicrtarasov/dicr-queryinterface-count 3 years ago
RodrigoDornelles e1e7ea37d5
use getTargetClass in function checkTargetAttributeExistence 3 years ago
Alexander Makarov fd1d4f75fe
Merge branch 'master' into dicr-queryinterface-count 3 years ago
Bizley 3e9599aba2
Merge pull request #18714 from yiisoft/upd 3 years ago
Arhell 97909e01be fix info block 3 years ago
Bizley 8ac70d4350
Merge pull request #18711 from dicrtarasov/dicr-throwable 3 years ago
Игорь Тарасов ed8fbaa8b1 fix QueryInterface::count return type 3 years ago
Игорь Тарасов 330166e703 fix Exception\Throwable order 3 years ago
Bizley bbb756a876
Merge pull request #18709 from yiisoft/fix 3 years ago
Arhell d4f904f42c fix IIS Web site link 3 years ago
Bizley 9b4e143378
Merge pull request #18703 from yiisoft/fix-link 3 years ago
Arhell 4d71a56ecb fix intro-yii.md (vi) link 3 years ago
Bizley 8f458771cb
Merge pull request #18698 from yiisoft/fix 3 years ago
Arhell f53a883400 fix intro-yii.md (zh-CN) link 3 years ago
Alexander Makarov 4a5b325160
Fix console error handler exception handling condition. Related to #18696 3 years ago
rhertogh 4d5fea7f6c
Fix #18695: Added `yii\web\Cookie::SAME_SITE_NONE` constant 3 years ago
蛋蛋 d5a428e001
Fix some code smells (#18696) 3 years ago
Bizley 9dbdd9a8e0
Merge pull request #18697 from yiisoft/fix 3 years ago
Arhell eebb80506d fix intro-yii.md (uz) link 3 years ago
Ihor Sychevskyi 6d709cc560
Fix intro-yii.md (pt-BR) link (#18692) 3 years ago
Bizley 7966fe47e6
Scrutinizer fixes (#18685) 3 years ago
Ihor Sychevskyi 25a46828e9
Fix id intro-yii.md (id) link (#18688) 3 years ago
rhertogh 31ca0fcb6f
Fix #18676: Added method `yii\helpers\BaseFileHelper::changeOwnership()` and properties `newFileMode`/`newFileOwnership` in `yii\console\controllers\BaseMigrateController` 3 years ago
Ihor Sychevskyi 68691eb0d7
Fix typo 3 years ago
Scilef 9f766ac779
Fix #18637: Mentioned that relation can not be named "relation" 3 years ago
Bizley 4cb2dfef1a
Add more tests for helpers (#18675) 3 years ago
aidanbek fff35b3796
Fix #18678: Fix `yii\caching\DbCache` to use configured cache table name instead of the default one in case of MSSQL varbinary column type detection 3 years ago
Bizley fdcbb9c982
Merge pull request #18672 from Arhell/fix-link 3 years ago
Arhell 6a3b7bb31b fix intro-yii.md (fr) link 3 years ago
rhertogh 0cd68a330d
Fix #18669: Changed visibility of `yii\web\User::checkRedirectAcceptable()` to `public` 3 years ago
Bizley 82be8b61cf
Replacing deprecated `::className()` with `::class` (#18671) 3 years ago
Ngô Quốc Đạt 143a9c66bf
Translate start-prerequisites.md into Vietnamese 3 years ago
RomanBush f7e29678a7
Update security-authorization.md (#18667) 3 years ago
Bizley 9780b46185
Merge pull request #18663 from Arhell/fix 3 years ago
Arhell c2bdba6358 fix intro-upgrade-from-v1.md link (id) 3 years ago
Bizley 1b3b3fb593
Merge pull request #18664 from winternet-studio/patch-1 3 years ago
Allan ddeb80cdf3
Fixed typo 3 years ago
Bizley b33f1a7ecb
Merge pull request #18659 from Arhell/fix 3 years ago
Arhell 9c63f43028 fix intro-upgrade-from-v1.md link 3 years ago
Bizley 4efd221ccb
Merge pull request #18651 from Arhell/fix-link 3 years ago
Arhell 431c7c5045 fix docs link (ar) 3 years ago
Anton 2520e50c52
Fix #18653: Added method `yii\helpers\BaseHtml::getInputIdByName()` 3 years ago
Marco van 't Wout 7e323ba07c
Fix #18650: Refactor `framework/assets/yii.activeForm.js` arrow function into traditional function for IE11 compatibility 3 years ago
Bizley 29777af4c2
Fix link in docs (#18645) 3 years ago
Bizley 56d8ca6ccb
Merge pull request #18628 from kjusupov/inflextor_fixes 3 years ago
Bizley 66ff8309b9
Update CHANGELOG.md 3 years ago
Kamchybek Jusupov c6441b750c Merge branch 'inflextor_fixes' of github.com:kjusupov/yii2 into inflextor_fixes 3 years ago
Kamchybek Jusupov 3019d4aa8e Merge branch 'inflextor_fixes' of github.com:kjusupov/yii2 into inflextor_fixes 3 years ago
Bizley e63be01f20
Update CHANGELOG.md 3 years ago
Bizley acd422b66e
Merge branch 'master' into inflextor_fixes 3 years ago
Kamchybek Jusupov 157043b3be Merge branch 'inflextor_fixes' of github.com:kjusupov/yii2 into inflextor_fixes 3 years ago
Kamchybek Jusupov 94a6b5d548 Added the CHANGELOG entry 3 years ago
Bizley 0d84591ac2
Merge pull request #18641 from Arhell/upd-urls 3 years ago
Arhell 79a81fd77f update npmjs urls 3 years ago
Alexander Makarov c76e4dd7c7
Update BaseInflector.php 3 years ago
Bizley 1be026eea1
Merge branch 'master' into inflextor_fixes 3 years ago
Kamchybek Jusupov b41f4dc76f Remove capitalized versions of rules 3 years ago
Ihor Sychevskyi 93425c3568
Fix #18631: Update nodejs links in docs 3 years ago
Alexander Makarov 9ce0d42daf
Update BaseInflector.php 3 years ago
Alexander Makarov c9889cfd2f
Update InflectorTest.php 3 years ago
Alexander Makarov f422d419c2
prepare for next release 3 years ago
Alexander Makarov 273cbab90e
release version 2.0.42.1 3 years ago
Alexander Makarov 7e970edb37
Merge branch 'master' into inflextor_fixes 3 years ago
Bizley 52cf02d685
Fix #18634: Fix `yii\db\BaseActiveRecord::unlink()` and `unlinkAll()` to omit condition for `on` property when it doesn't exist 3 years ago
Alexander Makarov 1646a135dc
Merge branch 'master' into inflextor_fixes 3 years ago
Alexander Makarov 3a58026359
prepare for next release 3 years ago
Alexander Makarov 88a7a00458
release version 2.0.42 3 years ago
Alexander Makarov 26656a2ed1
Minor cleanup 3 years ago
N. D 08a133e728
Update docs for #9718 (#18623) 3 years ago
Bizley 68a1c32400
Fix #18624: Fix `yii\di\Container` to properly resolve dependencies in case of PHP 8 union types 3 years ago
Bizley 7a67aa3e36
Merge pull request #18630 from Arhell/fix-link 3 years ago
Arhell 410b536608 fix link 3 years ago
Kamchybek Jusupov 9c8f653554 Added 'software' and 'hardware' string to BaseInflector $specials. 3 years ago
Bizley 7a855a7d99
Merge pull request #18626 from yiisoft/bizley-patch-1-1 3 years ago
Bizley 209cf9b2de
Improve docs 3 years ago
Bizley 18cd95b563
Merge pull request #18617 from darkdef/iss18604 3 years ago
Bizley f7fe3ae5f2
Merge branch 'master' into iss18604 3 years ago
DarkDef 4f74d2a2db Add line to changelog 3 years ago
Bizley f1a1d9ac03
Merge pull request #18622 from yiisoft/bizley-patch-1 3 years ago
DarkDef f14b2ccd89 remove duplicate code 3 years ago
Valerii Gorbachev a7ee99ce92
Update framework/db/mssql/QueryBuilder.php 3 years ago
Valerii Gorbachev 662c54b47c
Update framework/db/mssql/ColumnSchemaBuilder.php 3 years ago
Bizley 5b4af8dbba
Fix PHP8 deprecation 3 years ago
Bizley edbf4c5ff0
Merge branch 'master' into iss18604 3 years ago
Tobias Munk 18ec576d13
Merge pull request #18621 from schmunk42/feature/composer2-lock 3 years ago
Tobias Munk 9909462eda updated lock with composer 2 3 years ago
Bizley 7d8c955ebc
Merge branch 'master' into iss18604 3 years ago
Mikk Tendermann 629133f1bf
Fix #18619: Do not modify `yii\web\Cookie::$path` on `yii\web\Response::sendCookies()` 3 years ago
DarkDef 2d76f33dd4 Fixes after review 3 years ago
Valerii Gorbachev 12ccd2adde
Update framework/db/mssql/QueryBuilder.php 3 years ago
Valerii Gorbachev a0552f1680
Update framework/db/mssql/QueryBuilder.php 3 years ago
Valerii Gorbachev 98b0c5b665
Update framework/db/mssql/ColumnSchemaBuilder.php 3 years ago
Valerii Gorbachev dbc4d1ecea
Update framework/db/mssql/ColumnSchemaBuilder.php 3 years ago
Valerii Gorbachev a1cc222927
Update framework/db/mssql/QueryBuilder.php 3 years ago
Valerii Gorbachev 01a9fef962
Update framework/db/mssql/ColumnSchemaBuilder.php 3 years ago
Bizley d4c1e070f0
Merge branch 'master' into iss18604 3 years ago
DarkDef 4fba562cd0 New attemp 3 years ago
Никита Медведев f00e44fb6e
Fix #18569: Add `NumberValidator::$allowArray` 3 years ago
DarkDef 9367af4b15 Fix for issue #18604 3 years ago
Alexander Makarov 03052621b7
Fix #18611: Add note about isAcquired() behavior to Mutex (#18615) 3 years ago
Bizley 4e2cd24399
Merge pull request #18614 from yiisoft/18613-do-not-use-this-for-static 3 years ago
Alexander Makarov 250b2cf4ff
Remove extra space from changelog 3 years ago
Alexander Makarov f62701bf1d
Fixed another call 3 years ago
Alexander Makarov 3d4b0f941e
Add changelog 3 years ago
Alexander Makarov ffec508e58
Do not use $this to call static method 3 years ago
AIZAWA Hina ad2ce6ad4f
Fix event namespace in `yii\db\Connection` phpdoc (#18608) 3 years ago
Bizley a6dba47963
Fix #18590: Fix `yii\web\UrlManager` to instantiate cache only when it's actually needed 4 years ago
bscheshirwork 5ad809e815
Fix #18593: Fix setting the `maxlength` attribute for `Html::activeInput()` and `Html::activeTextArea()` based on `length` parameter of validator 4 years ago
Dmytro Naumenko 9cea743191
Merge pull request #18588 from ihitbuttons/18585-email-validator-idn-fix 4 years ago
Dmytro Naumenko 2f051bc441
Add Since PHPDoc 4 years ago
Bizley 269b6c4fe6
Merge branch 'master' into 18585-email-validator-idn-fix 4 years ago
Bizley 5ee38777bc
Removed not used lines and duplicated tests run 4 years ago
Aaron Mueller b57d48692a :Merge branch 'master' of git://github.com/yiisoft/yii2 into 18585-email-validator-idn-fix 4 years ago
Aaron Mueller 63cb61f591 Refactoring so regex has it's own variables 4 years ago
Toir Tuychiev 054e259861
Fixed typo in console/Application.php (#18596) 4 years ago
Bizley f48fc452af
Merge branch 'master' into 18585-email-validator-idn-fix 4 years ago
Bizley 6a04ac9651
Merge pull request #18592 from sartor/fix/db-pgsql-raw-sql-params 4 years ago
Sartor 6809523cc2 Db pgsql getRawSql params replace fix changelog line 4 years ago
Aaron Mueller 88de58c537 Merge branch '18585-email-validator-idn-fix' of github.com:ihitbuttons/yii2 into 18585-email-validator-idn-fix 4 years ago
Aaron Mueller 6659e6a187 Refactor based on suggestion 4 years ago
Aaron Mueller ddde2c2e0f Merge branch 'master' of git://github.com/yiisoft/yii2 into 18585-email-validator-idn-fix 4 years ago
Sartor 395dc70468
Merge branch 'master' into fix/db-pgsql-raw-sql-params 4 years ago
Sartor 335385d7ba Db pgsql getRawSql params replace fix 4 years ago
Alexander Makarov 2be3c721c4
Merge branch 'master' into 18585-email-validator-idn-fix 4 years ago
Aaron Mueller d02d60e070 Limiting explode to 2 4 years ago
Aaron Mueller 808c64d900 Refactoring method per request 4 years ago
Toir Tuychiev 2650948e87
Fix #18323: Fix client validation of RadioList when there are disabled items 4 years ago
Dmytro Naumenko 10bb71a822
Fix #17203: Fix `yii\db\Connection` to persist customized `queryBuilder` configuration after the `close()` → `open()` cycle 4 years ago
theonedemon 42e8aa4ea5
Fix #18325: Fix `yii\db\pgsql\Schema` to respect non-default PgSQL schema name for data types 4 years ago
Aaron Mueller 3593696b93 Fixing Email Validator to handle edge case where email address is valid but fails ascii conversion. 4 years ago
Bizley a03fb0c01e
Fix #17631: Fix `yii\widgets\BaseListView` to properly render custom summary 4 years ago
Pigo 14a581562a
Fix #18566: Throw the original exception when `yii\web\Controller::bindInjectedParams()` catches HttpException 4 years ago
simialbi 45a81c1eeb
Minified SVGs (#18573) 4 years ago
Bizley 34441ca549
Fix #14343: Fix `yii\test\ActiveFixture` to use model's DB connection instead of the default one 4 years ago
Bizley 83c876ae3d
Merge pull request #18575 from Mignar/18574-bugfix-dbsession-using-correct-db 4 years ago
Alexander Krug 74d1842dee Use the correct db if strict mode is used in DbSession fixes #18574 4 years ago
Bizley ef6d45d0b1
Merge pull request #18571 from simialbi/master 4 years ago
Simon Karlen 06f1917b9c
fixed test 4 years ago
Simon Karlen 1ef65a9f7c
fixed icon sizes (inline css) and added link to fontawesome 4 years ago
Bizley ba6e3278d6
Merge pull request #18565 from darkdef/mssql_dbcache 4 years ago
Bizley 3dd3692b7c
Update CHANGELOG.md 4 years ago
DarkDef d92fd370ee add lines to CHANGELOG.md 4 years ago
DarkDef 7017903fe4 Storing check on `varbinary` the result in a private property 4 years ago
DarkDef 64ecbf10b1 Fix for issue #18526 4 years ago
Bizley 54f25c4b04
Fix #17174: Fix `yii\db\BaseActiveRecord::unlink()` to not ignore `on` conditions in `via` relations 4 years ago
Bizley 9a7f778194
Fix #18557: Fix `yii\data\ActiveDataProvider` to handle DB connection configuration of different type than just `yii\db\Connection` 4 years ago
Daniil Sazhin db47207018
Fix #18534: Added `prepareSearchQuery` property in `yii\rest\IndexAction` 4 years ago
simialbi ba9366be0d
Fix #17479: Fix `yii\grid\ActionColumn` to render icons when no glyphicons are available 4 years ago
Dmitry Eliseev 4479c66522
Fixed phpdoc types 4 years ago
Bizley cfe782b3f5
Fix #18544: Fix `yii\validators\NumberValidator` to disallow values with whitespaces 4 years ago
Bizley bd2b1f25f0
Fix #18552: Fix bug with `yii\data\SqlDataProvider` not properly handling SQL with `ORDER BY` clause 4 years ago
Bizley 7f6671cdfc
Update OWASP link 4 years ago
Alexander Makarov 426c84ae1b
prepare for next release 4 years ago
Alexander Makarov 5fbd28e056
release version 2.0.41.1 4 years ago
stevekr 6182284039
Update Formatter types 4 years ago
Bizley 4997c51152
Fix #18548: Fix bug with REST rules with prefixes containing tokens not being parsed properly 4 years ago
Bizley 6dad27d4a1
Reversed #18499 (#18546) 4 years ago
Alexander Makarov cd9cc45845
prepare for next release 4 years ago
Alexander Makarov 4e2045c040
release version 2.0.41 4 years ago
Alexander Makarov 1ace064848
Pre-release adjustments 4 years ago
Alexander Makarov 6b1750d35f
Add note about updating cacert.pem 4 years ago
Alexander Makarov 3883d73cea
Fix #9718: Fix user staying authorized despite authKey change 4 years ago
  1. 3
      .github/PULL_REQUEST_TEMPLATE.md
  2. 4
      .github/workflows/build.yml
  3. 14
      .github/workflows/ci-oracle.yml
  4. 1
      .gitignore
  5. 2
      .php_cs
  6. 2
      README.md
  7. 9
      build/controllers/DevController.php
  8. 5
      build/controllers/MimeTypeController.php
  9. 14
      build/controllers/PhpDocController.php
  10. 10
      build/controllers/ReleaseController.php
  11. 1
      build/controllers/TranslationController.php
  12. 4
      build/controllers/Utf8Controller.php
  13. 6
      code-of-conduct.md
  14. 30
      composer.json
  15. 165
      composer.lock
  16. 2
      cs/src/YiiConfig.php
  17. 2
      docs/guide-ar/README.md
  18. 2
      docs/guide-ar/intro-yii.md
  19. 4
      docs/guide-ar/start-databases.md
  20. 2
      docs/guide-ar/start-forms.md
  21. 2
      docs/guide-ar/start-hello.md
  22. 12
      docs/guide-ar/start-installation.md
  23. 16
      docs/guide-ar/start-looking-ahead.md
  24. 2
      docs/guide-ar/start-prerequisites.md
  25. 4
      docs/guide-ar/start-workflow.md
  26. 2
      docs/guide-de/README.md
  27. 2
      docs/guide-es/README.md
  28. 18
      docs/guide-es/caching-data.md
  29. 4
      docs/guide-es/caching-http.md
  30. 4
      docs/guide-es/concept-aliases.md
  31. 2
      docs/guide-es/concept-autoloading.md
  32. 28
      docs/guide-es/concept-behaviors.md
  33. 2
      docs/guide-es/concept-components.md
  34. 6
      docs/guide-es/concept-di-container.md
  35. 12
      docs/guide-es/concept-events.md
  36. 20
      docs/guide-es/db-dao.md
  37. 2
      docs/guide-es/db-migrations.md
  38. 2
      docs/guide-es/db-query-builder.md
  39. 2
      docs/guide-es/glossary.md
  40. 8
      docs/guide-es/helper-array.md
  41. 8
      docs/guide-es/helper-html.md
  42. 2
      docs/guide-es/input-file-upload.md
  43. 4
      docs/guide-es/input-validation.md
  44. 14
      docs/guide-es/intro-upgrade-from-v1.md
  45. 8
      docs/guide-es/intro-yii.md
  46. 4
      docs/guide-es/output-client-scripts.md
  47. 12
      docs/guide-es/rest-authentication.md
  48. 2
      docs/guide-es/rest-controllers.md
  49. 2
      docs/guide-es/rest-quick-start.md
  50. 2
      docs/guide-es/rest-resources.md
  51. 2
      docs/guide-es/rest-response-formatting.md
  52. 2
      docs/guide-es/rest-versioning.md
  53. 2
      docs/guide-es/runtime-bootstrapping.md
  54. 10
      docs/guide-es/runtime-responses.md
  55. 6
      docs/guide-es/runtime-sessions-cookies.md
  56. 10
      docs/guide-es/security-authorization.md
  57. 2
      docs/guide-es/security-passwords.md
  58. 2
      docs/guide-es/start-databases.md
  59. 2
      docs/guide-es/start-hello.md
  60. 14
      docs/guide-es/start-installation.md
  61. 16
      docs/guide-es/start-looking-ahead.md
  62. 6
      docs/guide-es/start-prerequisites.md
  63. 4
      docs/guide-es/start-workflow.md
  64. 6
      docs/guide-es/structure-applications.md
  65. 26
      docs/guide-es/structure-assets.md
  66. 2
      docs/guide-es/structure-controllers.md
  67. 4
      docs/guide-es/structure-entry-scripts.md
  68. 42
      docs/guide-es/structure-extensions.md
  69. 28
      docs/guide-es/structure-filters.md
  70. 6
      docs/guide-es/structure-models.md
  71. 2
      docs/guide-es/structure-modules.md
  72. 2
      docs/guide-es/structure-overview.md
  73. 10
      docs/guide-es/structure-views.md
  74. 2
      docs/guide-es/structure-widgets.md
  75. 4
      docs/guide-es/test-acceptance.md
  76. 4
      docs/guide-es/test-fixtures.md
  77. 4
      docs/guide-es/test-functional.md
  78. 6
      docs/guide-es/test-unit.md
  79. 4
      docs/guide-es/tutorial-core-validators.md
  80. 2
      docs/guide-es/tutorial-start-from-scratch.md
  81. 2
      docs/guide-es/tutorial-template-engines.md
  82. 6
      docs/guide-es/tutorial-yii-integration.md
  83. 2
      docs/guide-fr/README.md
  84. 20
      docs/guide-fr/caching-data.md
  85. 4
      docs/guide-fr/caching-http.md
  86. 4
      docs/guide-fr/concept-aliases.md
  87. 4
      docs/guide-fr/concept-autoloading.md
  88. 28
      docs/guide-fr/concept-behaviors.md
  89. 2
      docs/guide-fr/concept-components.md
  90. 4
      docs/guide-fr/concept-di-container.md
  91. 16
      docs/guide-fr/concept-events.md
  92. 60
      docs/guide-fr/db-active-record.md
  93. 26
      docs/guide-fr/db-dao.md
  94. 2
      docs/guide-fr/db-migrations.md
  95. 6
      docs/guide-fr/db-query-builder.md
  96. 10
      docs/guide-fr/helper-array.md
  97. 8
      docs/guide-fr/helper-html.md
  98. 2
      docs/guide-fr/input-file-upload.md
  99. 4
      docs/guide-fr/input-forms.md
  100. 4
      docs/guide-fr/input-validation.md
  101. Some files were not shown because too many files have changed in this diff Show More

3
.github/PULL_REQUEST_TEMPLATE.md

@ -3,5 +3,4 @@
| Is bugfix? | ✔/❌
| New feature? | ✔/❌
| Breaks BC? | ✔/❌
| Tests pass? | ✔/❌
| Fixed issues | comma-separated list of tickets # fixed by the PR, if any
| Fixed issues | <!-- comma-separated list of tickets # fixed by the PR, if any -->

4
.github/workflows/build.yml

@ -33,7 +33,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest]
php: ['5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0']
php: ['5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1']
steps:
- name: Generate french locale
@ -66,7 +66,7 @@ jobs:
- name: PHP Unit tests for PHP >= 7.2
run: vendor/bin/phpunit --verbose --exclude-group $PHPUNIT_EXCLUDE_GROUP --colors=always
env:
PHPUNIT_EXCLUDE_GROUP: oci,wincache,xcache,zenddata,cubrid
PHPUNIT_EXCLUDE_GROUP: mssql,oci,wincache,xcache,zenddata,cubrid
if: matrix.php >= '7.2'
- name: PHP Unit tests for PHP <= 7.0
run: vendor/bin/phpunit --verbose --exclude-group $PHPUNIT_EXCLUDE_GROUP --colors=always

14
.github/workflows/ci-oracle.yml

@ -68,24 +68,14 @@ jobs:
restore-keys: |
php${{ matrix.php }}-composer-
- name: Install dependencies with composer php 7.4
if: matrix.php == '7.4'
- name: Install dependencies with composer
run: composer update --prefer-dist --no-interaction --no-progress --optimize-autoloader --ansi
- name: Install dependencies with composer php 8.0
if: matrix.php == '8.0'
run: composer update --ignore-platform-reqs --prefer-dist --no-interaction --no-progress --optimize-autoloader --ansi
- name: PHP Unit tests for PHP 7.4
- name: PHP Unit tests
run: vendor/bin/phpunit --coverage-clover=coverage.clover --group oci --colors=always
if: matrix.php == '7.4'
- name: Run tests with phpunit without coverage
run: vendor/bin/phpunit --group oci --colors=always
- name: Code coverage
run: |
wget https://scrutinizer-ci.com/ocular.phar
php ocular.phar code-coverage:upload --format=php-clover coverage.clover
if: matrix.php == '7.4'
continue-on-error: true # if is fork

1
.gitignore vendored

@ -47,3 +47,4 @@ phpunit.phar
# NPM packages
/node_modules
.env
package-lock.json

2
.php_cs

@ -1,7 +1,7 @@
<?php
if (!class_exists('yii\cs\YiisoftConfig', true)) {
// @todo change error message
// TODO: change error message
fwrite(STDERR, "Your php-cs-version is outdated: please upgrade it.\n");
die(16);
}

2
README.md

@ -1,6 +1,6 @@
<p align="center">
<a href="https://www.yiiframework.com/" target="_blank">
<img src="https://www.yiiframework.com/files/logo/yii.png" width="400" alt="Yii Framework" />
<img src="https://www.yiiframework.com/image/yii_logo_light.svg" width="400" alt="Yii Framework" />
</a>
</p>

9
build/controllers/DevController.php

@ -16,8 +16,8 @@ use yii\helpers\FileHelper;
/**
* This command helps to set up a dev environment with all extensions and applications.
*
* It will clone an extension or app repo and link the yii2 dev installation to the containted applications/extensions vendor dirs
* to help working on yii using the application to test it.
* It will clone an extension or app repo and link the yii2 dev installation to the contained applications/extensions vendor dirs
* to help to work on yii using the application to test it.
*
* @author Carsten Brandt <mail@cebe.cc>
* @since 2.0
@ -29,7 +29,7 @@ class DevController extends Controller
*/
public $defaultAction = 'all';
/**
* @var bool whether to use HTTP when cloning github repositories
* @var bool whether to use HTTP when cloning GitHub repositories
*/
public $useHttp = false;
/**
@ -52,7 +52,7 @@ class DevController extends Controller
'authclient' => 'git@github.com:yiisoft/yii2-authclient.git',
'bootstrap' => 'git@github.com:yiisoft/yii2-bootstrap.git',
'bootstrap4' => 'git@github.com:yiisoft/yii2-bootstrap4.git',
'codeception' => 'git@github.com:yiisoft/yii2-codeception.git',
'bootstrap5' => 'git@github.com:yiisoft/yii2-bootstrap5.git',
'composer' => 'git@github.com:yiisoft/yii2-composer.git',
'debug' => 'git@github.com:yiisoft/yii2-debug.git',
'elasticsearch' => 'git@github.com:yiisoft/yii2-elasticsearch.git',
@ -68,6 +68,7 @@ class DevController extends Controller
'smarty' => 'git@github.com:yiisoft/yii2-smarty.git',
'sphinx' => 'git@github.com:yiisoft/yii2-sphinx.git',
'swiftmailer' => 'git@github.com:yiisoft/yii2-swiftmailer.git',
'symfonymailer' => 'git@github.com:yiisoft/yii2-symfonymailer.git',
'twig' => 'git@github.com:yiisoft/yii2-twig.git',
];

5
build/controllers/MimeTypeController.php

@ -99,6 +99,11 @@ class MimeTypeController extends Controller
$mimeMap = array_merge($mimeMap, $this->additionalMimeTypes);
ksort($mimeMap);
$array = VarDumper::export($mimeMap);
if (PHP_VERSION_ID >= 80100) {
$array = array_replace($array, array('xz' => 'application/octet-stream'));
}
$content = <<<EOD
<?php
/**

14
build/controllers/PhpDocController.php

@ -14,7 +14,7 @@ use yii\helpers\FileHelper;
use yii\helpers\Json;
/**
* PhpDocController is there to help maintaining PHPDoc annotation in class files.
* PhpDocController is there to help to maintain PHPDoc annotation in class files.
*
* @author Carsten Brandt <mail@cebe.cc>
* @author Alexander Makarov <sam@rmcreative.ru>
@ -733,19 +733,17 @@ class PhpDocController extends Controller
$docLine = ' * @property';
$note = '';
if (isset($prop['get'], $prop['set'])) {
if ($prop['get']['type'] != $prop['set']['type']) {
if ($prop['get']['type'] !== $prop['set']['type']) {
$note = ' Note that the type of this property differs in getter and setter.'
. ' See [[get' . ucfirst($propName) . '()]]'
. ' and [[set' . ucfirst($propName) . '()]] for details.';
}
} elseif (isset($prop['get'])) {
if (!$this->hasSetterInParents($className, $propName)) {
$note = ' This property is read-only.';
$docLine .= '-read';
}
} elseif (isset($prop['set'])) {
if (!$this->hasGetterInParents($className, $propName)) {
$note = ' This property is write-only.';
$docLine .= '-write';
}
} else {
@ -754,7 +752,7 @@ class PhpDocController extends Controller
$docLine .= ' ' . $this->getPropParam($prop, 'type') . " $$propName ";
$comment = explode("\n", $this->getPropParam($prop, 'comment') . $note);
foreach ($comment as &$cline) {
$cline = ltrim($cline, '* ');
$cline = ltrim(rtrim($cline), '* ');
}
$docLine = wordwrap($docLine . implode(' ', $comment), 110, "\n * ") . "\n";
@ -871,11 +869,11 @@ class PhpDocController extends Controller
*/
protected function isBaseObject($className, \ReflectionClass $ref)
{
$isDepreceatedObject = false;
$isDeprecatedObject = false;
if (PHP_VERSION_ID <= 70100) {
$isDepreceatedObject = $ref->isSubclassOf('yii\base\Object') || $className === 'yii\base\Object';
$isDeprecatedObject = $ref->isSubclassOf('yii\base\Object') || $className === 'yii\base\Object';
}
return !$isDepreceatedObject && !$ref->isSubclassOf('yii\base\BaseObject') && $className !== 'yii\base\BaseObject';
return !$isDeprecatedObject && !$ref->isSubclassOf('yii\base\BaseObject') && $className !== 'yii\base\BaseObject';
}
private function shouldSkipClass($className)

10
build/controllers/ReleaseController.php

@ -15,7 +15,7 @@ use yii\helpers\Console;
use yii\helpers\FileHelper;
/**
* ReleaseController is there to help preparing releases.
* ReleaseController is there to help to prepare releases.
*
* Get a version overview:
*
@ -53,7 +53,7 @@ class ReleaseController extends Controller
*/
public $dryRun = false;
/**
* @var bool whether to fetch latest tags.
* @var bool whether to fetch the latest tags.
*/
public $update = false;
/**
@ -206,7 +206,7 @@ class ReleaseController extends Controller
$newVersions[$k] = $this->version;
}
} else {
// otherwise get next patch or minor
// otherwise, get next patch or minor
$newVersions = $this->getNextVersions($versions, self::PATCH);
}
@ -629,7 +629,7 @@ class ReleaseController extends Controller
$this->stdout("\n\nThe following steps are left for you to do manually:\n\n");
$nextVersion2 = $this->getNextVersions($nextVersion, self::PATCH); // TODO support other versions
$this->stdout("- close the $version milestone on github and open new ones for {$nextVersion["app-$name"]} and {$nextVersion2["app-$name"]}: https://github.com/yiisoft/yii2-app-$name/milestones\n");
$this->stdout("- Create Application packages and upload them to framework releast at github: ./build/build release/package app-$name\n");
$this->stdout("- Create Application packages and upload them to framework release at github: ./build/build release/package app-$name\n");
$this->stdout("\n");
}
@ -803,7 +803,7 @@ class ReleaseController extends Controller
try {
chdir($path);
} catch (\yii\base\ErrorException $e) {
throw new Exception('Failed to getch git tags in ' . $path . ': ' . $e->getMessage());
throw new Exception('Failed to fetch git tags in ' . $path . ': ' . $e->getMessage());
}
exec('git fetch --tags', $output, $ret);
if ($ret != 0) {

1
build/controllers/TranslationController.php

@ -29,7 +29,6 @@ class TranslationController extends Controller
* @param string $sourcePath the directory where the original documentation files are
* @param string $translationPath the directory where the translated documentation files are
* @param string $title custom title to use for report
* @return string
*/
public function actionReport($sourcePath, $translationPath, $title = 'Translation report')
{

4
build/controllers/Utf8Controller.php

@ -69,11 +69,11 @@ class Utf8Controller extends Controller
}
if ($ord < 0x0020 && $ord != 0x000A && $ord != 0x0009 ||
0x0080 <= $ord && $ord < 0x009F) {
$this->found('CONTROL CHARARCTER', $c, $line, $pos, $file);
$this->found('CONTROL CHARACTER', $c, $line, $pos, $file);
continue;
}
// if ($ord > 0x009F) {
// $this->found("NON ASCII CHARARCTER", $c, $line, $pos, $file);
// $this->found("NON ASCII CHARACTER", $c, $line, $pos, $file);
// continue;
// }
}

6
code-of-conduct.md

@ -62,7 +62,7 @@ the project's leadership.
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 1.4.0, available at
[http://contributor-covenant.org/version/1/4/][version]
[https://contributor-covenant.org/version/1/4/][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
[homepage]: https://contributor-covenant.org
[version]: https://contributor-covenant.org/version/1/4/

30
composer.json

@ -5,20 +5,20 @@
"yii2",
"framework"
],
"homepage": "http://www.yiiframework.com/",
"homepage": "https://www.yiiframework.com/",
"type": "yii2-extension",
"license": "BSD-3-Clause",
"authors": [
{
"name": "Qiang Xue",
"email": "qiang.xue@gmail.com",
"homepage": "http://www.yiiframework.com/",
"homepage": "https://www.yiiframework.com/",
"role": "Founder and project lead"
},
{
"name": "Alexander Makarov",
"email": "sam@rmcreative.ru",
"homepage": "http://rmcreative.ru/",
"homepage": "https://rmcreative.ru/",
"role": "Core framework development"
},
{
@ -29,7 +29,7 @@
{
"name": "Carsten Brandt",
"email": "mail@cebe.cc",
"homepage": "http://cebe.cc/",
"homepage": "https://www.cebe.cc/",
"role": "Core framework development"
},
{
@ -57,9 +57,9 @@
],
"support": {
"issues": "https://github.com/yiisoft/yii2/issues?state=open",
"forum": "http://www.yiiframework.com/forum/",
"wiki": "http://www.yiiframework.com/wiki/",
"irc": "irc://irc.freenode.net/yii",
"forum": "https://forum.yiiframework.com/",
"wiki": "https://www.yiiframework.com/wiki",
"irc": "ircs://irc.libera.chat:6697/yii",
"source": "https://github.com/yiisoft/yii2"
},
"minimum-stability": "dev",
@ -75,10 +75,11 @@
"yiisoft/yii2-composer": "~2.0.4",
"ezyang/htmlpurifier": "~4.6",
"cebe/markdown": "~1.0.0 | ~1.1.0 | ~1.2.0",
"bower-asset/jquery": "3.5.*@stable | 3.4.*@stable | 3.3.*@stable | 3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable",
"bower-asset/jquery": "3.6.*@stable | 3.5.*@stable | 3.4.*@stable | 3.3.*@stable | 3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable",
"bower-asset/inputmask": "~3.2.2 | ~3.3.5",
"bower-asset/punycode": "1.3.*",
"bower-asset/yii2-pjax": "~2.0.1"
"bower-asset/yii2-pjax": "~2.0.1",
"paragonie/random_compat": ">=1"
},
"require-dev": {
"cweagans/composer-patches": "^1.7",
@ -102,11 +103,6 @@
"yii\\cs\\": "cs/src/"
}
},
"autoload-dev": {
"files": [
"tests/bootstrap.php"
]
},
"config": {
"platform": {"php": "5.4"}
},
@ -122,9 +118,13 @@
"phpunit/phpunit-mock-objects": {
"Fix PHP 7 and 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_mock_objects.patch"
},
"phpunit/php-file-iterator": {
"Fix PHP 8.1 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_path_file_iterator.patch"
},
"phpunit/phpunit": {
"Fix PHP 7 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php7.patch",
"Fix PHP 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php8.patch"
"Fix PHP 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php8.patch",
"Fix PHP 8.1 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php81.patch"
}
}
}

165
composer.lock generated

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "6282c196c2380b0d30b7104eccef989a",
"content-hash": "1dd00a91030b984d98f13fa6d6ecf7d9",
"packages": [
{
"name": "bower-asset/inputmask",
@ -32,7 +32,7 @@
"version": "3.5.1",
"source": {
"type": "git",
"url": "git@github.com:jquery/jquery-dist.git",
"url": "https://github.com/jquery/jquery-dist.git",
"reference": "4c0e4becb8263bb5b3e6dadc448d8e7305ef8215"
},
"dist": {
@ -50,7 +50,7 @@
"version": "v1.3.2",
"source": {
"type": "git",
"url": "git@github.com:bestiejs/punycode.js.git",
"url": "https://github.com/bestiejs/punycode.js.git",
"reference": "38c8d3131a82567bfef18da09f7f4db68c84f8a3"
},
"dist": {
@ -62,16 +62,16 @@
},
{
"name": "bower-asset/yii2-pjax",
"version": "v2.0.7",
"version": "2.0.7.1",
"source": {
"type": "git",
"url": "https://github.com/yiisoft/jquery-pjax.git",
"reference": "885fc8c2d36c93a801b6af0ee8ad55d79df97cb1"
"reference": "aef7b953107264f00234902a3880eb50dafc48be"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/yiisoft/jquery-pjax/zipball/885fc8c2d36c93a801b6af0ee8ad55d79df97cb1",
"reference": "885fc8c2d36c93a801b6af0ee8ad55d79df97cb1"
"url": "https://api.github.com/repos/yiisoft/jquery-pjax/zipball/aef7b953107264f00234902a3880eb50dafc48be",
"reference": "aef7b953107264f00234902a3880eb50dafc48be"
},
"require": {
"bower-asset/jquery": ">=1.8"
@ -200,6 +200,60 @@
"time": "2020-06-29T00:56:53+00:00"
},
{
"name": "paragonie/random_compat",
"version": "v2.0.20",
"source": {
"type": "git",
"url": "https://github.com/paragonie/random_compat.git",
"reference": "0f1f60250fccffeaf5dda91eea1c018aed1adc2a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/0f1f60250fccffeaf5dda91eea1c018aed1adc2a",
"reference": "0f1f60250fccffeaf5dda91eea1c018aed1adc2a",
"shasum": ""
},
"require": {
"php": ">=5.2.0"
},
"require-dev": {
"phpunit/phpunit": "4.*|5.*"
},
"suggest": {
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
},
"type": "library",
"autoload": {
"files": [
"lib/random.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Paragon Initiative Enterprises",
"email": "security@paragonie.com",
"homepage": "https://paragonie.com"
}
],
"description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
"keywords": [
"csprng",
"polyfill",
"pseudorandom",
"random"
],
"support": {
"email": "info@paragonie.com",
"issues": "https://github.com/paragonie/random_compat/issues",
"source": "https://github.com/paragonie/random_compat"
},
"time": "2021-04-17T09:33:01+00:00"
},
{
"name": "yiisoft/yii2-composer",
"version": "2.0.10",
"source": {
@ -316,20 +370,20 @@
},
{
"name": "composer/semver",
"version": "1.7.1",
"version": "1.7.2",
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
"reference": "38276325bd896f90dfcfe30029aa5db40df387a7"
"reference": "647490bbcaf7fc4891c58f47b825eb99d19c377a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/semver/zipball/38276325bd896f90dfcfe30029aa5db40df387a7",
"reference": "38276325bd896f90dfcfe30029aa5db40df387a7",
"url": "https://api.github.com/repos/composer/semver/zipball/647490bbcaf7fc4891c58f47b825eb99d19c377a",
"reference": "647490bbcaf7fc4891c58f47b825eb99d19c377a",
"shasum": ""
},
"require": {
"php": "^5.3.2 || ^7.0"
"php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
"phpunit/phpunit": "^4.5 || ^5.0.5"
@ -376,7 +430,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/semver/issues",
"source": "https://github.com/composer/semver/tree/1.7.1"
"source": "https://github.com/composer/semver/tree/1.7.2"
},
"funding": [
{
@ -392,20 +446,20 @@
"type": "tidelift"
}
],
"time": "2020-09-27T13:13:07+00:00"
"time": "2020-12-03T15:47:16+00:00"
},
{
"name": "composer/xdebug-handler",
"version": "1.4.4",
"version": "1.4.6",
"source": {
"type": "git",
"url": "https://github.com/composer/xdebug-handler.git",
"reference": "6e076a124f7ee146f2487554a94b6a19a74887ba"
"reference": "f27e06cd9675801df441b3656569b328e04aa37c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6e076a124f7ee146f2487554a94b6a19a74887ba",
"reference": "6e076a124f7ee146f2487554a94b6a19a74887ba",
"url": "https://api.github.com/repos/composer/xdebug-handler/zipball/f27e06cd9675801df441b3656569b328e04aa37c",
"reference": "f27e06cd9675801df441b3656569b328e04aa37c",
"shasum": ""
},
"require": {
@ -413,7 +467,8 @@
"psr/log": "^1.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8"
"phpstan/phpstan": "^0.12.55",
"symfony/phpunit-bridge": "^4.2 || ^5"
},
"type": "library",
"autoload": {
@ -439,7 +494,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/xdebug-handler/issues",
"source": "https://github.com/composer/xdebug-handler/tree/1.4.4"
"source": "https://github.com/composer/xdebug-handler/tree/1.4.6"
},
"funding": [
{
@ -455,7 +510,7 @@
"type": "tidelift"
}
],
"time": "2020-10-24T12:39:10+00:00"
"time": "2021-03-25T17:01:18+00:00"
},
{
"name": "cweagans/composer-patches",
@ -891,60 +946,6 @@
"time": "2015-09-13T19:01:00+00:00"
},
{
"name": "paragonie/random_compat",
"version": "v2.0.19",
"source": {
"type": "git",
"url": "https://github.com/paragonie/random_compat.git",
"reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/446fc9faa5c2a9ddf65eb7121c0af7e857295241",
"reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241",
"shasum": ""
},
"require": {
"php": ">=5.2.0"
},
"require-dev": {
"phpunit/phpunit": "4.*|5.*"
},
"suggest": {
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
},
"type": "library",
"autoload": {
"files": [
"lib/random.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Paragon Initiative Enterprises",
"email": "security@paragonie.com",
"homepage": "https://paragonie.com"
}
],
"description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
"keywords": [
"csprng",
"polyfill",
"pseudorandom",
"random"
],
"support": {
"email": "info@paragonie.com",
"issues": "https://github.com/paragonie/random_compat/issues",
"source": "https://github.com/paragonie/random_compat"
},
"time": "2020-10-15T10:06:57+00:00"
},
{
"name": "phpdocumentor/reflection-docblock",
"version": "2.0.5",
"source": {
@ -1337,16 +1338,16 @@
},
{
"name": "phpunit/phpunit",
"version": "4.8.34",
"version": "4.8.36",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "7eb45205d27edd94bd2b3614085ea158bd1e2bca"
"reference": "46023de9a91eec7dfb06cc56cb4e260017298517"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7eb45205d27edd94bd2b3614085ea158bd1e2bca",
"reference": "7eb45205d27edd94bd2b3614085ea158bd1e2bca",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517",
"reference": "46023de9a91eec7dfb06cc56cb4e260017298517",
"shasum": ""
},
"require": {
@ -1407,9 +1408,9 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"source": "https://github.com/sebastianbergmann/phpunit/tree/4.8.34"
"source": "https://github.com/sebastianbergmann/phpunit/tree/4.8.36"
},
"time": "2017-01-26T16:15:36+00:00"
"time": "2017-06-21T08:07:12+00:00"
},
{
"name": "phpunit/phpunit-mock-objects",
@ -2918,5 +2919,5 @@
"platform-overrides": {
"php": "5.4"
},
"plugin-api-version": "2.0.0"
"plugin-api-version": "2.1.0"
}

2
cs/src/YiiConfig.php

@ -156,7 +156,7 @@ class YiiConfig extends Config
}
/**
* Merge current rules config with provided list of rules.
* Merge current rules' config with provided list of rules.
*
* @param array $rules
* @return $this

2
docs/guide-ar/README.md

@ -1,7 +1,7 @@
Yii 2.0 الدليل التقني الخاص ببيئة العمل
===============================
تم تحرير هذا الملف اعتمادا على [الشروط الخاصة بتوثيف ال Yii](http://www.yiiframework.com/doc/terms/).
تم تحرير هذا الملف اعتمادا على [الشروط الخاصة بتوثيف ال Yii](https://www.yiiframework.com/doc/terms/).
جميع الحقوق محفوظة

2
docs/guide-ar/intro-yii.md

@ -28,7 +28,7 @@ Yii هو إطار عام لبرمجة الويب ، مما يعني أنه يم
</p>
<p dir="rtl">
ال Yii إطار عمل صمم من قبل فريق برمجي متكامل، فهو ليس مجرد عمل فردي ، بل يتكون من فريق تطوير أساسي وقوي(http://www.yiiframework.com/team/) ، بالإضافة إلى منتدى كبير
ال Yii إطار عمل صمم من قبل فريق برمجي متكامل، فهو ليس مجرد عمل فردي ، بل يتكون من <a href="https://www.yiiframework.com/team">فريق تطوير أساسي وقوي</a> ، بالإضافة إلى منتدى كبير
من المهنيين الذين يساهمون باستمرار في تطوير هذا الإطار. فريق المطورين الخاص بال Yii
يراقب عن كثب أحدث اتجاهات تطوير الويب وأفضل الممارسات والمميزات التي
وجدت في الأطر والمشاريع الأخرى. وتدرج بانتظام بإضافة أفضل الممارسات والميزات الى ال Yii عبر واجهات بسيطة وأنيقة.

4
docs/guide-ar/start-databases.md

@ -60,7 +60,7 @@ INSERT INTO `country` VALUES ('US','United States',322976000);
## <div dir="rtl">إعدادات الإتصال الخاصة بقواعد البيانات - Configuring a DB Connection</div> <span id="configuring-db-connection"></span>
<p dir="rtl">
قبل أن تكمل الشرح، تأكد من تثبيت ال PHP <a href="https://secure.php.net/manual/en/book.pdo.php">PDO</a> وال PDO driver، بالنسبة لهذا المثال، فإننا سنستخدم ال driver الخاص بال MySql وهو ال <code>pdo_mysql</code>، وهذه هي المتطلبات الأساسية لبناء أي التطبيق اذا كان التطبيق يستخدم ال relational database.
قبل أن تكمل الشرح، تأكد من تثبيت ال PHP <a href="https://www.php.net/manual/en/book.pdo.php">PDO</a> وال PDO driver، بالنسبة لهذا المثال، فإننا سنستخدم ال driver الخاص بال MySql وهو ال <code>pdo_mysql</code>، وهذه هي المتطلبات الأساسية لبناء أي التطبيق اذا كان التطبيق يستخدم ال relational database.
</p>
<blockquote class="note"><p dir="rtl">
@ -68,7 +68,7 @@ INSERT INTO `country` VALUES ('US','United States',322976000);
كما يمكنك تفعيل ال driver المطلوب عن طريق حذف الفاصلة المنقوطة قبل ال driver المقصود مثل:
<code>extension=php_pdo_mysql.dll</code>
ويمكنك الإطلاع على المزيد من هنا:
<a href="https://secure.php.net/manual/en/pdo.installation.php">pdo installation</a>
<a href="https://www.php.net/manual/en/pdo.installation.php">pdo installation</a>
</p></blockquote>
<p dir="rtl">

2
docs/guide-ar/start-forms.md

@ -135,7 +135,7 @@ class SiteController extends Controller
</p>
<blockquote class="note"><p dir="rtl">
ملاحظة: في هذا المثال البسيط، نعرض صفحة التأكيد فقط عند إرسال البيانات بشكل صحيح. عند الممارسة العملية، يجب عليك استخدام [[yii\web\Controller::refresh()|refresh()]] أو [[yii\web\Controller::redirect()|redirect()]] لتجنب أي مشكلة تحصل عن طريق ال resubmission والتي تندرج تحت العنوان <a href="http://en.wikipedia.org/wiki/Post/Redirect/Get">form resubmission problems</a>.
ملاحظة: في هذا المثال البسيط، نعرض صفحة التأكيد فقط عند إرسال البيانات بشكل صحيح. عند الممارسة العملية، يجب عليك استخدام [[yii\web\Controller::refresh()|refresh()]] أو [[yii\web\Controller::redirect()|redirect()]] لتجنب أي مشكلة تحصل عن طريق ال resubmission والتي تندرج تحت العنوان <a href="https://en.wikipedia.org/wiki/Post/Redirect/Get">form resubmission problems</a>.
</p></blockquote>
## <div dir="rtl">إنشاء ال views</div> <span id="creating-views"></span>

2
docs/guide-ar/start-hello.md

@ -89,7 +89,7 @@ use yii\helpers\Html;
</p>
<p dir="rtl">
ملاحظة: في الشيفرة البرمجية أعلاه، تكون ال <code>message</code> مضمنة داخل ال [[yii\helpers\Html::encode()]] قبل أن يتم طباعتها، هذا الأمر ضروري لأن ال parameter التي تأتي من المستخدم النهائي لا يجب الوثوق بها، فهي يمكن أن تحتوي على شيفرات برمجية تستغل الضعف الحاص بك بموضوع الأمان مثل <a href="http://en.wikipedia.org/wiki/Cross-site_scripting">vulnerable to XSS attack</a> عن طريق دمج JS code مع ال parameter.
ملاحظة: في الشيفرة البرمجية أعلاه، تكون ال <code>message</code> مضمنة داخل ال [[yii\helpers\Html::encode()]] قبل أن يتم طباعتها، هذا الأمر ضروري لأن ال parameter التي تأتي من المستخدم النهائي لا يجب الوثوق بها، فهي يمكن أن تحتوي على شيفرات برمجية تستغل الضعف الحاص بك بموضوع الأمان مثل <a href="https://en.wikipedia.org/wiki/Cross-site_scripting">vulnerable to XSS attack</a> عن طريق دمج JS code مع ال parameter.
</p>
<p dir="rtl">

12
docs/guide-ar/start-installation.md

@ -87,7 +87,7 @@ composer create-project --prefer-dist yiisoft/yii2-app-basic basic
يتضمن تثبيت Yii من ملف أرشيف ثلاث خطوات وهي:
</p>
<ol dir="rtl">
<li> تثبت الملف من خلال الموقع الرسمي <a href="http://www.yiiframework.com/download/">yiiframework.com</a>.</li>
<li> تثبت الملف من خلال الموقع الرسمي <a href="https://www.yiiframework.com/download/">yiiframework.com</a>.</li>
<li> قم بفك ضغط الملف الذي تم تنزيله إلى مجلد يمكن الوصول إليه عبر الويب.</li>
<li> قم بتعديل ملف <code>config/web.php</code> عن طريق إدخال secret key ل<code> cookieValidationKey</code>
(يتم ذلك تلقائيًا إذا قمت بتثبيت ال Yii باستخدام Composer): </li>
@ -121,7 +121,7 @@ composer create-project --prefer-dist yiisoft/yii2-app-basic basic
--------------------------
<p dir="rtl">
تعتمد ال Yii على حزم <a href="http://bower.io/">Bower</a> و/أو <a href="https://www.npmjs.org/">NPM</a> لتثبيت مكتبات ال (CSS و JavaScript). ويستخدم ال composer للحصول على هذه المكتبات ، مما يسمح بالحصول على إصدارات ال PHP و CSS/JavaScript في نفس الوقت. ويمكن تحقيق ذلك إما عن طريق استخدام <a href="https://asset-packagist.org/">asset-packagist.org</a> أو من خلال ال <a href="https://github.com/francoispluchino/composer-asset-plugin/">composer asset plugin</a>، يرجى الرجوع إلى <a href="../guide/structure-assets.md">Assets documentation</a> لمزيد من التفاصيل.
تعتمد ال Yii على حزم <a href="https://bower.io/">Bower</a> و/أو <a href="https://www.npmjs.com/">NPM</a> لتثبيت مكتبات ال (CSS و JavaScript). ويستخدم ال composer للحصول على هذه المكتبات ، مما يسمح بالحصول على إصدارات ال PHP و CSS/JavaScript في نفس الوقت. ويمكن تحقيق ذلك إما عن طريق استخدام <a href="https://asset-packagist.org/">asset-packagist.org</a> أو من خلال ال <a href="https://github.com/fxpio/composer-asset-plugin">composer asset plugin</a>، يرجى الرجوع إلى <a href="../guide/structure-assets.md">Assets documentation</a> لمزيد من التفاصيل.
<br /><br />
قد ترغب في إدارة ال assets عبر ال native Bower/NPM أو استخدام ال CDN أو تجنب تثبيت ال assets بالكامل من حلال ال Composer ، ويمكن ذلك من خلال إضافة الأسطر التالية إلى "composer.json":
</p>
@ -143,7 +143,7 @@ composer create-project --prefer-dist yiisoft/yii2-app-basic basic
--------------------------
<p dir="rtl">
بعد الانتهاء من التثبيت، ستحتاج الى القيام بإعداد خادم الويب الخاص بك(your web server) (انظر القسم التالي) أو قم باستخدام <a href="https://secure.php.net/manual/en/features.commandline.webserver.php">built-in PHP web server</a> عن طريق تنفيذ الأمر التالي داخل المسار web في المشروع الخاص بك:
بعد الانتهاء من التثبيت، ستحتاج الى القيام بإعداد خادم الويب الخاص بك(your web server) (انظر القسم التالي) أو قم باستخدام <a href="https://www.php.net/manual/en/features.commandline.webserver.php">built-in PHP web server</a> عن طريق تنفيذ الأمر التالي داخل المسار web في المشروع الخاص بك:
</p>
```bash
@ -179,7 +179,7 @@ http://localhost:8080/
</ul>
<p dir="rtl">
يجب عليك أن تقوم بتثبيت وإعداد ال PHP الخاص بك بحيث تلبي الحد الأدنى من متطلبات ال Yii. الأهم من ذلك يجب أن يكون الإصدار الخاص بال PHP أعلى أو يساوي 5.4. من الناحية المثالية أحدث إصدار يعمل مع ال Yii هو ال PHP 7. يجب عليك أيضًا تثبيت ال <a href="https://secure.php.net/manual/en/pdo.installation.php">PDO PHP Extension</a>.
يجب عليك أن تقوم بتثبيت وإعداد ال PHP الخاص بك بحيث تلبي الحد الأدنى من متطلبات ال Yii. الأهم من ذلك يجب أن يكون الإصدار الخاص بال PHP أعلى أو يساوي 5.4. من الناحية المثالية أحدث إصدار يعمل مع ال Yii هو ال PHP 7. يجب عليك أيضًا تثبيت ال <a href="https://www.php.net/manual/en/pdo.installation.php">PDO PHP Extension</a>.
</p>
@ -191,7 +191,7 @@ http://localhost:8080/
</p></blockquote>
<p dir="rtl">
يجب أن يعمل التطبيق الذي تم تثبيته وفقًا للتعليمات المذكورة أعلاه مع أي من الخوادم ال <a href="http://httpd.apache.org/">Apache HTTP</a> أو ال <a href="http://nginx.org/">Nginx HTTP</a> في كل من أنظمة التشغيل Windows, Mac OS X أو Linux ممن لديها إصدار أعلى أو يساوي PHP 5.4، كما أن ال Yii 2.0 متوافق مع ال Facebook <a href="http://hhvm.com/">HHVM</a>، لكن، يجب أن تأخذ بعين الإعتبار أن ال HHVM يسلك في بعض الأحيان بطريقة مختلفة عن ال Native PHP، لذلك يجب أن تأخذ عناية إضافية عندما تعمل على ال HHVM.
يجب أن يعمل التطبيق الذي تم تثبيته وفقًا للتعليمات المذكورة أعلاه مع أي من الخوادم ال <a href="https://httpd.apache.org/">Apache HTTP</a> أو ال <a href="https://nginx.org/">Nginx HTTP</a> في كل من أنظمة التشغيل Windows, Mac OS X أو Linux ممن لديها إصدار أعلى أو يساوي PHP 5.4، كما أن ال Yii 2.0 متوافق مع ال Facebook <a href="https://hhvm.com/">HHVM</a>، لكن، يجب أن تأخذ بعين الإعتبار أن ال HHVM يسلك في بعض الأحيان بطريقة مختلفة عن ال Native PHP، لذلك يجب أن تأخذ عناية إضافية عندما تعمل على ال HHVM.
</p>
<p dir="rtl">
@ -244,7 +244,7 @@ DocumentRoot "path/to/basic/web"
-----------------------
<p dir="rtl">
لاستخدام <a href="http://wiki.nginx.org/">Nginx</a>، يجب تثبيت PHP على أنه <a href="https://secure.php.net/install.fpm">FPM SAPI</a>، ويمكنك استخدام إعدادات ال Nginx التالية، مع الإنتباه على استبدال المسار من <code>path/to/basic/web</code> الى المسار الفعلي وصولا إلى <code>basic/web</code> بالإضافة الى إستبدال <code>mysite.test</code> إلى ال hostname الخاص بالتطبيق.
لاستخدام <a href="https://wiki.nginx.org/">Nginx</a>، يجب تثبيت PHP على أنه <a href="https://www.php.net/install.fpm">FPM SAPI</a>، ويمكنك استخدام إعدادات ال Nginx التالية، مع الإنتباه على استبدال المسار من <code>path/to/basic/web</code> الى المسار الفعلي وصولا إلى <code>basic/web</code> بالإضافة الى إستبدال <code>mysite.test</code> إلى ال hostname الخاص بالتطبيق.
</p>

16
docs/guide-ar/start-looking-ahead.md

@ -12,25 +12,25 @@
<li>
التوثيق
<ul>
<li><a href="http://www.yiiframework.com/doc-2.0/guide-README.html">The Definitive Guide - الدليل الشامل</a>: كما يشير الإسم، فإن هذا الدليل يحدد آلية عمل ال Yii بدقة عالية، ويوفر إرشادات حول كيفية إستخدام ال Yii، هذا الجزء الأكثر أهمية في ال Yii، والذي يجب عليك قرائته قبل كتابة أي Yii code (ملاحظة: جزء البداية من هنا، والذي قمنا بدراسته هو أحد هذه الأجزاء، ومن أهمها للبدء بإنشاء التطبيقات من خلال ال Yii).</li>
<li><a href="http://www.yiiframework.com/doc-2.0/index.html">The Class Reference - المرجع الخاص بال Class</a> في هذا الجزء يتم تحديد الية إستخدام كل Class يقدمه ال Yii، في العادة يتم إستخدام هذا المرجع عند كتابة شيفرة برمجية وأنت ترغب في فهم آلية العمل ل Class معين، أو Method, او فهم Proporty معينة...الخ، من الأفضل إستخدام المرجع الخاص بال Class فقط عند فهم آلية العمل لل Yii. </li>
<li><a href="http://www.yiiframework.com/wiki/?tag=yii2">The Wiki Articles - مقالات الويكي</a> مقالات الويكي هي مجموعة من الخبرات العملية للمستخدمين، تمت كتابتها ونشرها على شكل مقالات لمشاركة الخبرات، ومعظم هذه الكتابات تكون مثل الوصفات الخاصة بالطبخ، موجودة لخدمة هدف معين، وحل مشكلة محددة باستخدام ال Yii، وبالرغم من أن هذه الكتابات قد لا تكون بجودة ودقة الدليل الشامل، الا أنها قد تغطي مواضيع أكثر، وتطرح أيضا حلولا مباشرة للإستخدام.</li>
<li><a href="http://www.yiiframework.com/doc/">الكتب</a></li>
<li><a href="https://www.yiiframework.com/doc-2.0/guide-README.html">The Definitive Guide - الدليل الشامل</a>: كما يشير الإسم، فإن هذا الدليل يحدد آلية عمل ال Yii بدقة عالية، ويوفر إرشادات حول كيفية إستخدام ال Yii، هذا الجزء الأكثر أهمية في ال Yii، والذي يجب عليك قرائته قبل كتابة أي Yii code (ملاحظة: جزء البداية من هنا، والذي قمنا بدراسته هو أحد هذه الأجزاء، ومن أهمها للبدء بإنشاء التطبيقات من خلال ال Yii).</li>
<li><a href="https://www.yiiframework.com/doc-2.0/index.html">The Class Reference - المرجع الخاص بال Class</a> في هذا الجزء يتم تحديد الية إستخدام كل Class يقدمه ال Yii، في العادة يتم إستخدام هذا المرجع عند كتابة شيفرة برمجية وأنت ترغب في فهم آلية العمل ل Class معين، أو Method, او فهم Proporty معينة...الخ، من الأفضل إستخدام المرجع الخاص بال Class فقط عند فهم آلية العمل لل Yii. </li>
<li><a href="https://www.yiiframework.com/wiki/?tag=yii2">The Wiki Articles - مقالات الويكي</a> مقالات الويكي هي مجموعة من الخبرات العملية للمستخدمين، تمت كتابتها ونشرها على شكل مقالات لمشاركة الخبرات، ومعظم هذه الكتابات تكون مثل الوصفات الخاصة بالطبخ، موجودة لخدمة هدف معين، وحل مشكلة محددة باستخدام ال Yii، وبالرغم من أن هذه الكتابات قد لا تكون بجودة ودقة الدليل الشامل، الا أنها قد تغطي مواضيع أكثر، وتطرح أيضا حلولا مباشرة للإستخدام.</li>
<li><a href="https://www.yiiframework.com/doc/">الكتب</a></li>
</ul>
</li>
<li><a href="http://www.yiiframework.com/extensions/">Extensions - الملحقات</a>: تفتخر ال Yii بوجود مكتبة ضخمة من الملحقات التي تمت برمجتها وإضافتها من قبل المستخدمين المتطوعين الذين شاركوا أعمالهم وطورها لتجعل مهمة المطورين الآخرين أسهل وأسرع في تطوير التطبيفات المبنية بواسطة ال Yii.</li>
<li><a href="https://www.yiiframework.com/extensions/">Extensions - الملحقات</a>: تفتخر ال Yii بوجود مكتبة ضخمة من الملحقات التي تمت برمجتها وإضافتها من قبل المستخدمين المتطوعين الذين شاركوا أعمالهم وطورها لتجعل مهمة المطورين الآخرين أسهل وأسرع في تطوير التطبيفات المبنية بواسطة ال Yii.</li>
<li>
المجتمع
<ul>
<li>المنتدى: <a href="http://www.yiiframework.com/forum/">http://www.yiiframework.com/forum/</a></li>
<li>IRC chat: The #yii channel on the freenode network (irc://irc.freenode.net/yii)</li>
<li>المنتدى: <a href="https://forum.yiiframework.com/">https://forum.yiiframework.com/</a></li>
<li>IRC chat: The #yii channel on the Libera (ircs://irc.libera.chat:6697/yii)</li>
<li>Slack chanel: <a href="https://yii.slack.com">https://yii.slack.com</a></li>
<li>Gitter chat: <a href="https://gitter.im/yiisoft/yii2">https://gitter.im/yiisoft/yii2</a></li>
<li>GitHub: <a href="https://github.com/yiisoft/yii2">https://github.com/yiisoft/yii2</a></li>
<li>Facebook: <a href="https://www.facebook.com/groups/yiitalk/">https://www.facebook.com/groups/yiitalk/</a></li>
<li>Twitter: <a href="https://twitter.com/yiiframework">https://twitter.com/yiiframework</a></li>
<li>LinkedIn: <a href="https://www.linkedin.com/groups/yii-framework-1483367">https://www.linkedin.com/groups/yii-framework-1483367</a></li>
<li>Stackoverflow: <a href="http://stackoverflow.com/questions/tagged/yii2">http://stackoverflow.com/questions/tagged/yii2</a></li>
<li>Stackoverflow: <a href="https://stackoverflow.com/questions/tagged/yii2">https://stackoverflow.com/questions/tagged/yii2</a></li>
</ul>
</li>
</ul>

2
docs/guide-ar/start-prerequisites.md

@ -7,7 +7,7 @@
## <div dir="rtl">PHP</div>
<p dir="rtl">
ال Yii هو إطار عمل PHP، لذا تأكد من قراءة وفهم المرجع الرسمي الخاص بلغة ال <a href="https://secure.php.net/manual/en/langref.php">PHP</a>. عند البدء بتطوير المشاريع أو التطبيقات باستخدام ال Yii ، ستكتب التعليمات البرمجية بطريقة كائنية التوجه OOP، لذا تأكد من أنك على دراية بـمفاهيم ال <a href="https://secure.php.net/manual/en/language.oop5.basic.php">OOP</a> وكذلك ال <a href="https://secure.php.net/manual/en/language.namespaces.php">namespaces</a>.
ال Yii هو إطار عمل PHP، لذا تأكد من قراءة وفهم المرجع الرسمي الخاص بلغة ال <a href="https://www.php.net/manual/en/langref.php">PHP</a>. عند البدء بتطوير المشاريع أو التطبيقات باستخدام ال Yii ، ستكتب التعليمات البرمجية بطريقة كائنية التوجه OOP، لذا تأكد من أنك على دراية بـمفاهيم ال <a href="https://www.php.net/manual/en/language.oop5.basic.php">OOP</a> وكذلك ال <a href="https://www.php.net/manual/en/language.namespaces.php">namespaces</a>.
</p>
## <div dir="rtl">البرمجة كائنية التوجه object oriented programming</div>

4
docs/guide-ar/start-workflow.md

@ -51,7 +51,7 @@
أكثر المسارات والملفات أهمية الموجودة داخل التطبيق (بافتراض أن ال application's root directory هو <code>basic</code>) هي:
</p>
```
```js
basic/ application base path
composer.json used by Composer, describes package information
config/ contains application and other configurations
@ -75,7 +75,7 @@ basic/ application base path
</p>
<p dir="rtl">
يعتمد ال Yii على إستخدام ال MVC، وال MVC هو أحد ال Architectural Pattern، وهي اختصار ل <a href="http://wikipedia.org/wiki/Model-view-controller">model-view-controller</a>،
يعتمد ال Yii على إستخدام ال MVC، وال MVC هو أحد ال Architectural Pattern، وهي اختصار ل <a href="https://wikipedia.org/wiki/Model-view-controller">model-view-controller</a>،
هذا الأسلوب ينعكس في تنظيم المسارات الخاصة بالملفات كما في الشكل أعلاه. يحتوي المسار <code>models</code> على جميع الكلاس <a href="../guide/structure-models.md">(model classes)</a> ، ويحتوي مسار ال <code>views</code> على جميع الصفحات التي ستستخدم في العرض <a href="../guide/structure-controllers.md">(view scripts)</a>، ويحتوي مسار ال<code>controllers</code> على
جميع <a href="../guide/structure-views.md">(controller classes)</a>
</p>

2
docs/guide-de/README.md

@ -1,7 +1,7 @@
Das umfassende Handbuch für Yii 2.0
===================================
Dieses Tutorial wurde unter den [Bedingungen der Yii-Dokumentation](http://www.yiiframework.com/doc/terms/) veröffentlicht.
Dieses Tutorial wurde unter den [Bedingungen der Yii-Dokumentation](https://www.yiiframework.com/doc/terms/) veröffentlicht.
Alle Rechte vorbehalten.

2
docs/guide-es/README.md

@ -1,7 +1,7 @@
Guía Definitiva de Yii 2.0
==========================
Este tutorial se publica bajo los [Términos de Documentación Yii](http://www.yiiframework.com/doc/terms/).
Este tutorial se publica bajo los [Términos de Documentación Yii](https://www.yiiframework.com/doc/terms/).
Todos los derechos reservados.

18
docs/guide-es/caching-data.md

@ -28,7 +28,7 @@ representan diferentes tipos de almacenamiento en caché, como por ejemplo en me
Los Componentes de Caché están normalmente registrados como [componentes de la aplicación](structure-application-components.md) para que de esta forma puedan
ser configurados y accesibles globalmente. El siguiente código muestra cómo configurar el componente de aplicación
`cache` para usar [memcached](http://memcached.org/) con dos servidores caché:
`cache` para usar [memcached](https://memcached.org/) con dos servidores caché:
```php
'components' => [
@ -72,15 +72,15 @@ el código que utiliza la caché. Por ejemplo, podrías modificar la configuraci
Yii proporciona varios componentes de caché que pueden almacenar datos en diferentes medios. A continuación
se muestra un listado con los componentes de caché disponibles:
* [[yii\caching\ApcCache]]: utiliza la extensión de PHP [APC](https://secure.php.net/manual/es/book.apc.php). Esta opción puede ser considerada como la más rápida de entre todas las disponibles para una aplicación centralizada. (ej. un servidor, no dedicado al balance de carga, etc).
* [[yii\caching\DbCache]]: utiliza una tabla de base de datos para almacenar los datos. Por defecto, se creará y usará como base de datos [SQLite3](http://sqlite.org/) en el directorio runtime. Se puede especificar explícitamente que base de datos va a ser utilizada configurando la propiedad `db`.
* [[yii\caching\ApcCache]]: utiliza la extensión de PHP [APC](https://www.php.net/manual/es/book.apc.php). Esta opción puede ser considerada como la más rápida de entre todas las disponibles para una aplicación centralizada. (ej. un servidor, no dedicado al balance de carga, etc).
* [[yii\caching\DbCache]]: utiliza una tabla de base de datos para almacenar los datos. Por defecto, se creará y usará como base de datos [SQLite3](https://sqlite.org/) en el directorio runtime. Se puede especificar explícitamente que base de datos va a ser utilizada configurando la propiedad `db`.
* [[yii\caching\DummyCache]]: dummy cache (caché tonta) que no almacena en caché nada. El propósito de este componente es simplificar el código necesario para chequear la disponibilidad de caché. Por ejemplo, durante el desarrollo o si el servidor no tiene soporte de caché actualmente, puede utilizarse este componente de caché. Cuando este disponible un soporte en caché, puede cambiarse el componente correspondiente. En ambos casos, puede utilizarse el mismo código `Yii::$app->cache->get($key)` para recuperar un dato sin la preocupación de que `Yii::$app->cache` pueda ser `null`.
* [[yii\caching\FileCache]]: utiliza un fichero estándar para almacenar los datos. Esto es adecuado para almacenar grandes bloques de datos (como páginas).
* [[yii\caching\MemCache]]: utiliza las extensiones de PHP [memcache](https://secure.php.net/manual/es/book.memcache.php) y [memcached](https://secure.php.net/manual/es/book.memcached.php). Esta opción puede ser considerada como la más rápida cuando la caché es manejada en una aplicación distribuida (ej. con varios servidores, con balance de carga, etc..)
* [[yii\redis\Cache]]: implementa un componente de caché basado en [Redis](http://redis.io/) que almacenan pares clave-valor (requiere la versión 2.6.12 de redis).
* [[yii\caching\WinCache]]: utiliza la extensión de PHP [WinCache](http://iis.net/downloads/microsoft/wincache-extension) ([ver también](https://secure.php.net/manual/es/book.wincache.php)).
* [[yii\caching\XCache]] _(deprecated)_: utiliza la extensión de PHP [XCache](http://xcache.lighttpd.net/).
* [[yii\caching\ZendDataCache]] _(deprecated)_: utiliza [Zend Data Cache](http://files.zend.com/help/Zend-Server-6/zend-server.htm#data_cache_component.htm) como el medio fundamental de caché.
* [[yii\caching\MemCache]]: utiliza las extensiones de PHP [memcache](https://www.php.net/manual/es/book.memcache.php) y [memcached](https://www.php.net/manual/es/book.memcached.php). Esta opción puede ser considerada como la más rápida cuando la caché es manejada en una aplicación distribuida (ej. con varios servidores, con balance de carga, etc..)
* [[yii\redis\Cache]]: implementa un componente de caché basado en [Redis](https://redis.io/) que almacenan pares clave-valor (requiere la versión 2.6.12 de redis).
* [[yii\caching\WinCache]]: utiliza la extensión de PHP [WinCache](https://iis.net/downloads/microsoft/wincache-extension) ([ver también](https://www.php.net/manual/es/book.wincache.php)).
* [[yii\caching\XCache]] _(deprecated)_: utiliza la extensión de PHP [XCache](https://en.wikipedia.org/wiki/List_of_PHP_accelerators#XCache).
* [[yii\caching\ZendDataCache]] _(deprecated)_: utiliza [Zend Data Cache](https://files.zend.com/help/Zend-Server-6/zend-server.htm#data_cache_component.htm) como el medio fundamental de caché.
> Tip: Puedes utilizar diferentes tipos de almacenamiento de caché en la misma aplicación. Una estrategia común es la de usar almacenamiento de caché en memoria para almacenar datos que son pequeños pero que son utilizados constantemente (ej. datos estadísticos), y utilizar el almacenamiento de caché en archivos o en base de datos para guardar datos que son grandes y utilizados con menor frecuencia (ej. contenido de página).
@ -221,7 +221,7 @@ $result = Customer::getDb()->cache(function ($db) {
});
```
> Note: Algunos DBMS (ej. [MySQL](http://dev.mysql.com/doc/refman/5.1/en/query-cache.html)) también soporta el almacenamiento en caché desde el mismo servidor de la BD. Puedes optar por utilizar cualquiera de los mecanismos de memoria caché. El almacenamiento en caché de consultas previamente descrito tiene la ventaja que de que se puede especificar dependencias de caché de una forma flexible y son potencialmente mucho más eficientes.
> Note: Algunos DBMS (ej. [MySQL](https://dev.mysql.com/doc/refman/5.6/en/query-cache.html)) también soporta el almacenamiento en caché desde el mismo servidor de la BD. Puedes optar por utilizar cualquiera de los mecanismos de memoria caché. El almacenamiento en caché de consultas previamente descrito tiene la ventaja que de que se puede especificar dependencias de caché de una forma flexible y son potencialmente mucho más eficientes.
### Configuraciones <span id="query-caching-configs"></span>

4
docs/guide-es/caching-http.md

@ -110,7 +110,7 @@ La generación de un ETag que requiera muchos recursos puede echar por tierra el
introducir una sobrecarga innecesaria, ya que debe ser re-evaluada en cada solicitud (request). Trata de encontrar una
expresión sencilla para invalidar la caché si la página ha sido modificada.
> Note: En cumplimiento con [RFC 7232](http://tools.ietf.org/html/rfc7232#section-2.4),
> Note: En cumplimiento con [RFC 7232](https://datatracker.ietf.org/doc/html/rfc7232#section-2.4),
`HttpCache` enviará ambas cabeceras `ETag` y `Last-Modified` si ambas están configuradas. Y si el clientes envía tanto la cabecera `If-None-Match` como la cabecera `If-Modified-Since`, solo la primera será respetada.
## La Cabecera `Cache-Control` <span id="cache-control"></span>
@ -130,7 +130,7 @@ especifican en `session.cache_limiter` de la configuración INI de PHP. Estas ca
el almacenamiento de caché que desees de `HttpCache`. Para evitar este problema, por defecto `HttpCache` deshabilitará
automáticamente el envío de estas cabeceras. Si deseas modificar este comportamiento, tienes que configurar la propiedad
[[yii\filters\HttpCache::sessionCacheLimiter]]. La propiedad puede tomar un valor de cadena, incluyendo `public`, `private`,
`private_no_expire`, and `nocache`. Por favor, consulta el manual PHP acerca de [session_cache_limiter()](https://secure.php.net/manual/es/function.session-cache-limiter.php)
`private_no_expire`, and `nocache`. Por favor, consulta el manual PHP acerca de [session_cache_limiter()](https://www.php.net/manual/es/function.session-cache-limiter.php)
para una mejor explicación sobre esos valores.

4
docs/guide-es/concept-aliases.md

@ -113,8 +113,8 @@ utilizadas regularmente. La siguiente es la lista de alias predefinidos por Yii:
- `@webroot`: el directorio raíz Web de la aplicación Web se está ejecutando actualmente.
- `@web`: la URL base de la aplicación web se ejecuta actualmente. Tiene el mismo valor que [[yii\web\Request::baseUrl]].
- `@vendor`: el [[yii\base\Application::vendorPath|directorio vendor de Composer]]. Por defecto `@app/vendor`.
- `@bower`, el directorio raíz que contiene [paquetes bower](http://bower.io/). Por defecto `@vendor/bower`.
- `@npm`, el directorio raíz que contiene [paquetes npm](https://www.npmjs.org/). Por defecto `@vendor/npm`.
- `@bower`, el directorio raíz que contiene [paquetes bower](https://bower.io/). Por defecto `@vendor/bower`.
- `@npm`, el directorio raíz que contiene [paquetes npm](https://www.npmjs.com/). Por defecto `@vendor/npm`.
El alias `@yii` se define cuando incluyes el archivo `Yii.php` en tu [script de entrada](structure-entry-scripts.md),
mientras que el resto de los alias están definidos en el constructor de la aplicación cuando se aplica la

2
docs/guide-es/concept-autoloading.md

@ -1,7 +1,7 @@
Autocarga de clases
===================
Yii depende del [mecanismo de autocarga de clases](https://secure.php.net/manual/es/language.oop5.autoload.php) para localizar
Yii depende del [mecanismo de autocarga de clases](https://www.php.net/manual/es/language.oop5.autoload.php) para localizar
e incluir los archivos de las clases requiridas. Proporciona un cargador de clases de alto rendimiento que cumple con el
[estandard PSR-4](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md).
El cargador se instala cuando incluyes el archivo `Yii.php`.

28
docs/guide-es/concept-behaviors.md

@ -2,7 +2,7 @@ Comportamientos
===============
Comportamientos son instancias de [[yii\base\Behavior]] o sus clases "hija". Comportamientos, también conocido como
[mixins](http://en.wikipedia.org/wiki/Mixin), te permiten mejorar la funcionalidad de un [[yii\base\Component|componente]]
[mixins](https://en.wikipedia.org/wiki/Mixin), te permiten mejorar la funcionalidad de un [[yii\base\Component|componente]]
existente sin necesidad de modificar su herencia de clases.
Cuando un comportamiento se une a un componente, "inyectará" sus métodos y propiedades dentro del componente, y podrás
acceder a esos métodos y propiedades como si hubieran estado definidos por la clase de componente. Además, un
@ -116,21 +116,21 @@ class User extends ActiveRecord
{
return [
// anonymous behavior, behavior class name only
MyBehavior::className(),
MyBehavior::class,
// named behavior, behavior class name only
'myBehavior2' => MyBehavior::className(),
'myBehavior2' => MyBehavior::class,
// anonymous behavior, configuration array
[
'class' => MyBehavior::className(),
'class' => MyBehavior::class,
'prop1' => 'value1',
'prop2' => 'value2',
],
// named behavior, configuration array
'myBehavior4' => [
'class' => MyBehavior::className(),
'class' => MyBehavior::class,
'prop1' => 'value1',
'prop2' => 'value2',
]
@ -151,14 +151,14 @@ que se le va a unir el comportamiento:
use app\components\MyBehavior;
// vincular un objeto comportamiento "behavior"
$component->attachBehavior('myBehavior1', new MyBehavior);
$component->attachBehavior('myBehavior1', new MyBehavior());
// vincular una clase comportamiento
$component->attachBehavior('myBehavior2', MyBehavior::className());
$component->attachBehavior('myBehavior2', MyBehavior::class);
// asociar una matriz de configuración
$component->attachBehavior('myBehavior3', [
'class' => MyBehavior::className(),
'class' => MyBehavior::class,
'prop1' => 'value1',
'prop2' => 'value2',
]);
@ -167,8 +167,8 @@ Puede vincular múltiples comportamientos a la vez mediante el uso del método [
```php
$component->attachBehaviors([
'myBehavior1' => new MyBehavior, // un comportamiento nombrado
MyBehavior::className(), // un comportamiento anónimo
'myBehavior1' => new MyBehavior(), // un comportamiento nombrado
MyBehavior::class, // un comportamiento anónimo
]);
```
@ -176,10 +176,10 @@ También puedes asociar comportamientos a traves de [configuraciones](concept-co
```php
[
'as myBehavior2' => MyBehavior::className(),
'as myBehavior2' => MyBehavior::class,
'as myBehavior3' => [
'class' => MyBehavior::className(),
'class' => MyBehavior::class,
'prop1' => 'value1',
'prop2' => 'value2',
],
@ -270,7 +270,7 @@ class User extends ActiveRecord
{
return [
[
'class' => TimestampBehavior::className(),
'class' => TimestampBehavior::class,
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'],
ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'],
@ -309,7 +309,7 @@ $user->touch('login_time');
Comparación con Traits <span id="comparison-with-traits"></span>
----------------------
Mientras que los comportamientos son similares a [traits](https://secure.php.net/traits) en cuanto que ambos "inyectan" sus
Mientras que los comportamientos son similares a [traits](https://www.php.net/traits) en cuanto que ambos "inyectan" sus
métodos y propiedades a la clase primaria, son diferentes en muchos aspectos. Tal y como se describe abajo, los dos
tienen sus ventajas y desventajas. Son más como complementos el uno al otro en lugar de alternativas.

2
docs/guide-es/concept-components.md

@ -67,7 +67,7 @@ Siguiendo esas directrices hará que tus componentes sean [configurables](concep
$component = new MyClass(1, 2, ['prop1' => 3, 'prop2' => 4]);
// alternativamente
$component = \Yii::createObject([
'class' => MyClass::className(),
'class' => MyClass::class,
'prop1' => 3,
'prop2' => 4,
], [1, 2]);

6
docs/guide-es/concept-di-container.md

@ -2,7 +2,7 @@ Contenedor de Inyección de Dependencias
=======================================
Un contenedor de Inyección de Dependencias (ID), es un objeto que sabe como instancias y configurar objetos y sus
objetos dependientes. El [articulo de Martin](http://martinfowler.com/articles/injection.html) contiene una buena
objetos dependientes. El [articulo de Martin](https://martinfowler.com/articles/injection.html) contiene una buena
explicación de porque son útiles los contenedores de ID. A continuación explicaremos como usar el contenedor de ID que
proporciona Yii.
@ -14,7 +14,7 @@ de ID:
* Inyección de constructores;
* Inyección de setters y propiedades;
* Inyección de [llamadas de retorno PHP](https://secure.php.net/manual/es/language.types.callable.php);
* Inyección de [llamadas de retorno PHP](https://www.php.net/manual/es/language.types.callable.php);
### Inyección de Constructores <span id="constructor-injection"></span>
@ -316,7 +316,7 @@ Resumen <span id="summary"></span>
Tanto la inyección de dependencias como el [localizador de servicios](concept-service-locator.md) son patrones de
diseño populares que permiten construir software con acoplamiento flexible y más fácil de testear. Se recomienda
encarecida la lectura del articulo de [Martin](http://martinfowler.com/articles/injection.html) para obtener una mejor
encarecida la lectura del articulo de [Martin](https://martinfowler.com/articles/injection.html) para obtener una mejor
comprensión de la inyección de dependencias y de la localización de servicios.
Yii implementa su propio [localizador de servicios](concept-service-locator.md) por encima del contenedor de ID.

12
docs/guide-es/concept-events.md

@ -13,7 +13,7 @@ Gestor de Eventos <span id="event-handlers"></span>
-----------------
Un gestor de eventos es una
[llamada de retorno PHP (PHP callback)](https://secure.php.net/manual/es/language.types.callable.php) que se ejecuta cuando se
[llamada de retorno PHP (PHP callback)](https://www.php.net/manual/es/language.types.callable.php) que se ejecuta cuando se
lanza el evento al que corresponde. Se puede usar cualquier llamada de retorno de las enumeradas a continuación:
- una función de PHP global especificada como una cadena de texto (sin paréntesis), ej. `'trim'`;
@ -217,7 +217,7 @@ use Yii;
use yii\base\Event;
use yii\db\ActiveRecord;
Event::on(ActiveRecord::className(), ActiveRecord::EVENT_AFTER_INSERT, function ($event) {
Event::on(ActiveRecord::class, ActiveRecord::EVENT_AFTER_INSERT, function ($event) {
Yii::debug(get_class($event->sender) . ' is inserted');
});
```
@ -236,11 +236,11 @@ invocación de los gestores de eventos a nivel de clase.
```php
use yii\base\Event;
Event::on(Foo::className(), Foo::EVENT_HELLO, function ($event) {
Event::on(Foo::class, Foo::EVENT_HELLO, function ($event) {
var_dump($event->sender); // displays "null"
});
Event::trigger(Foo::className(), Foo::EVENT_HELLO);
Event::trigger(Foo::class, Foo::EVENT_HELLO);
```
Tenga en cuenta que en este caso, el `$event->sender` hace referencia al nombre de la clase que lanza el evento en
@ -254,10 +254,10 @@ Para desadjuntar un gestor de eventos a nivel de clase, se tiene que llamar a [[
```php
// desadjunta $handler
Event::off(Foo::className(), Foo::EVENT_HELLO, $handler);
Event::off(Foo::class, Foo::EVENT_HELLO, $handler);
// desadjunta todos los gestores de Foo::EVENT_HELLO
Event::off(Foo::className(), Foo::EVENT_HELLO);
Event::off(Foo::class, Foo::EVENT_HELLO);
```
Eventos Globales <span id="global-events"></span>

20
docs/guide-es/db-dao.md

@ -1,7 +1,7 @@
Objetos de Acceso a Bases de Datos
==================================
Construido sobre [PDO](https://secure.php.net/manual/es/book.pdo.php), Yii DAO (Objetos de Acceso a Bases de Datos) proporciona una
Construido sobre [PDO](https://www.php.net/manual/es/book.pdo.php), Yii DAO (Objetos de Acceso a Bases de Datos) proporciona una
API orientada a objetos para el acceso a bases de datos relacionales. Es el fundamento para otros métodos de acceso a bases de datos
más avanzados, incluyendo el [constructor de consultas](db-query-builder.md) y [active record](db-active-record.md).
@ -11,12 +11,12 @@ Yii DAO también significa que tienes que tienes que tomar un esfuerzo adicional
Yii DAO soporta las siguientes bases de datos:
- [MySQL](http://www.mysql.com/)
- [MySQL](https://www.mysql.com/)
- [MariaDB](https://mariadb.com/)
- [SQLite](http://sqlite.org/)
- [PostgreSQL](http://www.postgresql.org/): versión 8.4 o superior.
- [CUBRID](http://www.cubrid.org/): versión 9.3 o superior.
- [Oracle](http://www.oracle.com/us/products/database/overview/index.html)
- [SQLite](https://sqlite.org/)
- [PostgreSQL](https://www.postgresql.org/): versión 8.4 o superior.
- [CUBRID](https://www.cubrid.org/): versión 9.3 o superior.
- [Oracle](https://www.oracle.com/database/)
- [MSSQL](https://www.microsoft.com/en-us/sqlserver/default.aspx): versión 2008 o superior.
## Creando Conexiones DB <span id="creating-db-connections"></span>
@ -60,7 +60,7 @@ Puedes acceder a la conexión DB mediante la expresión `Yii::$app->db`.
Cuando configuras una conexión DB, deberías siempre especificar el Nombre de Origen de Datos (DSN) mediante la
propiedad [[yii\db\Connection::dsn|dsn]]. El formato del DSN varia para cada diferente base de datos. Por favor consulte el
[manual de PHP](https://secure.php.net/manual/es/function.PDO-construct.php) para más detalles. Abajo están algunos ejemplos:
[manual de PHP](https://www.php.net/manual/es/function.PDO-construct.php) para más detalles. Abajo están algunos ejemplos:
* MySQL, MariaDB: `mysql:host=localhost;dbname=mydatabase`
* SQLite: `sqlite:/path/to/database/file`
@ -185,7 +185,7 @@ $post = $db->createCommand('SELECT * FROM post WHERE id=:id AND status=:status',
->queryOne();
```
La vinculación parámetros es implementada mediante [sentencias preparadas (prepared statements)](https://secure.php.net/manual/es/mysqli.quickstart.prepared-statements.php).
La vinculación parámetros es implementada mediante [sentencias preparadas (prepared statements)](https://www.php.net/manual/es/mysqli.quickstart.prepared-statements.php).
Además de prevenir ataques de inyección de SQL, también puede mejorar el rendimiento preparando una sola vez una sentencia SQL y ejecutándola múltiples veces con diferentes
parámetros. Por ejemplo,
@ -396,7 +396,7 @@ En el momento de escribir esto, solo MSSQL y SQLite serán afectadas.
puede especificar el nivel de aislamiento directamente cuando empieza la transacción. Se tiene que llamar a
[[yii\db\Transaction::setIsolationLevel()]] después de que la transacción haya empezado.
[isolation levels]: http://en.wikipedia.org/wiki/Isolation_%28database_systems%29#Isolation_levels
[isolation levels]: https://en.wikipedia.org/wiki/Isolation_%28database_systems%29#Isolation_levels
### Transacciones Anidadas <span id="nesting-transactions"></span>
@ -437,7 +437,7 @@ try {
## Replicación y División Lectura-Escritura <span id="read-write-splitting"></span>
Muchos DBMS soportan [replicación de bases de datos](http://en.wikipedia.org/wiki/Replication_(computing)#Database_replication) para tener
Muchos DBMS soportan [replicación de bases de datos](https://en.wikipedia.org/wiki/Replication_(computing)#Database_replication) para tener
una mejor disponibilidad de la base de datos y un mejor tiempo de respuesta del servidor. Con la replicación de bases
de datos, los datos están replicados en los llamados *servidores maestros* (master servers) y *servidores esclavos*
(slave servers). Todas las escrituras y actualizaciones deben hacerse en el servidor maestro, mientras que las lecturas

2
docs/guide-es/db-migrations.md

@ -648,7 +648,7 @@ en `safeDown()`. En el ejemplo anterior primero creamos la tabla y luego inserta
que en `safeDown()` primero eliminamos el registro y posteriormente eliminamos la tabla.
> Note: No todos los DBMS soportan transacciones. Y algunas consultas a la BD no pueden ser puestas en transacciones. Para algunos ejemplos,
por favor lee acerca de [commits implícitos](http://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html). En estos casos,
por favor lee acerca de [commits implícitos](https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html). En estos casos,
deberías igualmente implementar `up()` y `down()`.

2
docs/guide-es/db-query-builder.md

@ -241,7 +241,7 @@ El operando puede ser uno de los siguientes (ver también [[yii\db\QueryInterfac
automáticamente entre un par de caracteres de porcentaje.
> Note: Cuando se usa PostgreSQL también se puede usar
[`ilike`](http://www.postgresql.org/docs/8.3/static/functions-matching.html#FUNCTIONS-LIKE) en lugar de `like` para
[`ilike`](https://www.postgresql.org/docs/8.3/static/functions-matching.html#FUNCTIONS-LIKE) en lugar de `like` para
filtrar resultados insensibles a mayúsculas (case-insensitive).
- `or like`: similar al operando `like` exceptuando que se usa `OR` para concatenar los predicados `LIKE` cuando haya

2
docs/guide-es/glossary.md

@ -52,7 +52,7 @@ Módulo es una sub-aplicación que contiene elementos MVC en sí mismo, como mod
## namespace
Namespace (espacio de nombres) se refiere a una [característica de PHP](https://secure.php.net/manual/es/language.namespaces.php) activamente utilizada en Yii 2.
Namespace (espacio de nombres) se refiere a una [característica de PHP](https://www.php.net/manual/es/language.namespaces.php) activamente utilizada en Yii 2.
# P

8
docs/guide-es/helper-array.md

@ -1,7 +1,7 @@
ArrayHelper
===========
Adicionalmente al [rico conjunto de funciones para arrays de PHP](https://secure.php.net/manual/es/book.array.php), el array helper de Yii proporciona
Adicionalmente al [rico conjunto de funciones para arrays de PHP](https://www.php.net/manual/es/book.array.php), el array helper de Yii proporciona
métodos estáticos adicionales permitiendo trabajar con arrays de manera más eficiente.
@ -66,7 +66,7 @@ Después de ejecutar el código el `$array` contendrá `['options' => [1, 2]]` y
## Comprobando la Existencia de Claves <span id="checking-existence-of-keys"></span>
`ArrayHelper::keyExists` funciona de la misma manera que [array_key_exists](https://secure.php.net/manual/es/function.array-key-exists.php)
`ArrayHelper::keyExists` funciona de la misma manera que [array_key_exists](https://www.php.net/manual/es/function.array-key-exists.php)
excepto que también soporta case-insensitive para la comparación de claves. Por ejemplo,
```php
@ -270,7 +270,7 @@ El tercer argumento es la dirección. En caso de ordenar por una clave podría s
direcciones de ordenación.
El último argumento es un PHP sort flag que toma los mismos valores que los pasados a
PHP [sort()](https://secure.php.net/manual/es/function.sort.php).
PHP [sort()](https://www.php.net/manual/es/function.sort.php).
## Detectando Tipos de Array <span id="detecting-array-types"></span>
@ -373,7 +373,7 @@ A pesar de que PHP ofrece `in_array()`, este no soporta sub-grupos u objetos de
Para ayudar en este tipo de pruebas, [[yii\helpers\ArrayHelper]] provee [[yii\helpers\ArrayHelper::isIn()|isIn()]]
y [[yii\helpers\ArrayHelper::isSubset()|isSubset()]] con la misma firma del método
[in_array()](https://secure.php.net/manual/en/function.in-array.php).
[in_array()](https://www.php.net/manual/en/function.in-array.php).
```php
// true

8
docs/guide-es/helper-html.md

@ -3,7 +3,7 @@ Clase auxiliar Html (Html helper)
Todas las aplicaciones web generan grandes cantidades de marcado HTML (HTML markup). Si el marcado es estático, se
puede realizar de forma efectiva
[mezclando PHP y HTML en un mismo archivo](https://secure.php.net/manual/es/language.basic-syntax.phpmode.php) pero cuando se
[mezclando PHP y HTML en un mismo archivo](https://www.php.net/manual/es/language.basic-syntax.phpmode.php) pero cuando se
generan dinámicamente empieza a complicarse su gestión sin ayuda extra. Yii ofrece esta ayuda en forma de una clase auxiliar Html
que proporciona un conjunto de métodos estáticos para gestionar las etiquetas HTML más comúnmente usadas, sus opciones y contenidos.
@ -45,7 +45,7 @@ gestión adicional que se debe conocer:
- Si un valor es `null`, el correspondiente atributo no se renderizará.
- Los atributos cuyos valores son de tipo booleano serán tratados como
[atributos booleanos](http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes).
[atributos booleanos](https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#boolean-attributes).
- Los valores de los atributos se codificarán en HTML usando [[yii\helpers\Html::encode()|Html::encode()]].
- El atributo "data" puede recibir un array. En este caso, se "expandirá" y se renderizará una lista de atributos
`data` ej. `'data' => ['id' => 1, 'name' => 'yii']` se convierte en `data-id="1" data-name="yii"`.
@ -96,8 +96,8 @@ eliminara una propiedad, se puede especificar como una cadena de texto.
Para que el contenido se muestre correctamente y de forma segura con caracteres especiales HTML el contenido debe ser
codificado. En PHP esto se hace con [htmlspecialchars](https://secure.php.net/manual/es/function.htmlspecialchars.php) y
[htmlspecialchars_decode](https://secure.php.net/manual/es/function.htmlspecialchars-decode.php). El problema con el uso
codificado. En PHP esto se hace con [htmlspecialchars](https://www.php.net/manual/es/function.htmlspecialchars.php) y
[htmlspecialchars_decode](https://www.php.net/manual/es/function.htmlspecialchars-decode.php). El problema con el uso
de estos métodos directamente es que se tiene que especificar la codificación y opciones extra cada vez. Ya que las
opciones siempre son las mismas y la codificación debe coincidir con la de la aplicación para prevenir problemas de
seguridad, Yii proporciona dos métodos simples y compactos:

2
docs/guide-es/input-file-upload.md

@ -123,7 +123,7 @@ También puedes subir varios archivos a la vez, con algunos ajustes en el códig
Primero debes ajustar la clase del modelo, agregando la opción `maxFiles` en la regla de validación `file` para limitar
el número máximo de archivos a subir. Definir `maxFiles` como `0` significa que no hay límite en el número de archivos
a subir simultáneamente. El número máximo de archivos permitidos para subir simultáneamente está también limitado
por la directiva PHP [`max_file_uploads`](https://secure.php.net/manual/en/ini.core.php#ini.max-file-uploads),
por la directiva PHP [`max_file_uploads`](https://www.php.net/manual/en/ini.core.php#ini.max-file-uploads),
cuyo valor por defecto es 20. El método `upload()` debería también ser modificado para guardar los archivos uno a uno.
```php

4
docs/guide-es/input-validation.md

@ -434,7 +434,7 @@ class EntryForm extends Model
{
return [
[['name', 'email'], 'required'],
['country', CountryValidator::className()],
['country', CountryValidator::class],
['email', 'email'],
];
}
@ -584,7 +584,7 @@ JS;
### Validación Diferida <span id="deferred-validation"></span>
Si necesitas realizar validación del lado del cliente asincrónica, puedes crear [Objetos Diferidos](http://api.jquery.com/category/deferred-object/).
Si necesitas realizar validación del lado del cliente asincrónica, puedes crear [Objetos Diferidos](https://api.jquery.com/category/deferred-object/).
Por ejemplo, para realizar validación AJAX personalizada, puedes utilizar el siguiente código:
```php

14
docs/guide-es/intro-upgrade-from-v1.md

@ -29,15 +29,15 @@ Yii 2.0 requiere PHP 5.4 o mayor, lo que es un gran progreso ya que Yii 1.1 func
Como resultado, hay muchas diferencias a nivel del lenguaje a las que deberías prestar atención.
Abajo hay un resumen de los mayores cambios en relación a PHP:
- [Namespaces](https://secure.php.net/manual/es/language.namespaces.php).
- [Funciones anónimas](https://secure.php.net/manual/es/functions.anonymous.php).
- [Namespaces](https://www.php.net/manual/es/language.namespaces.php).
- [Funciones anónimas](https://www.php.net/manual/es/functions.anonymous.php).
- La sintaxis corta de Arrays `[...elementos...]` es utilizada en vez de `array(...elementos...)`.
- Etiquetas cortas de `echo`. Ahora en las vistas se usa `<?=`. Esto se puede utilizar desde PHP 5.4.
- [SPL - Biblioteca estándar de PHP](https://secure.php.net/manual/es/book.spl.php).
- [Enlace estático en tiempo de ejecución](https://secure.php.net/manual/es/language.oop5.late-static-bindings.php).
- [Fecha y Hora](https://secure.php.net/manual/es/book.datetime.php).
- [Traits](https://secure.php.net/manual/es/language.oop5.traits.php).
- [intl](https://secure.php.net/manual/es/book.intl.php). Yii 2.0 utiliza la extensión `intl` de PHP
- [SPL - Biblioteca estándar de PHP](https://www.php.net/manual/es/book.spl.php).
- [Enlace estático en tiempo de ejecución](https://www.php.net/manual/es/language.oop5.late-static-bindings.php).
- [Fecha y Hora](https://www.php.net/manual/es/book.datetime.php).
- [Traits](https://www.php.net/manual/es/language.oop5.traits.php).
- [intl](https://www.php.net/manual/es/book.intl.php). Yii 2.0 utiliza la extensión `intl` de PHP
como soporte para internacionalización.

8
docs/guide-es/intro-yii.md

@ -32,12 +32,12 @@ y muchas más.
como se puede también aprovechar su sólida arquitectura de extensiones para utilizar o desarrollar extensiones distribuibles.
- El alto rendimiento es siempre la meta principal de Yii.
Yii no es un proyecto de un sola persona, detrás de Yii hay un [sólido equipo de desarrollo](http://www.yiiframework.com/team/),
Yii no es un proyecto de un sola persona, detrás de Yii hay un [sólido equipo de desarrollo](https://www.yiiframework.com/team/),
así como una gran comunidad en la que numerosos profesionales contribuyen constantemente a su desarrollo.
El equipo de desarrollo de Yii se mantiene atento a las últimas tendencias de desarrollo web, así como a las mejores prácticas y características de otros frameworks y proyectos.
Las buenas prácticas y características más relevantes de otros proyectos se incorporan regularmente a la base del framework y se exponen a través de interfaces simples y elegantes.
[about_yii]: http://www.yiiframework.com/about/
[about_yii]: https://www.yiiframework.com/about/
Versiones de Yii
----------------
@ -55,6 +55,6 @@ Yii 2.0 requiere PHP 5.4.0 o una versión posterior y corre de mejor manera en l
ejecutando el script de comprobación incluido en cada lanzamiento de Yii.
Para utilizar Yii se requieren conocimientos básicos de programación orientada a objetos (POO), porque el framework Yii se basa íntegramente en esta tecnología.
Yii 2.0 hace uso también de las últimas características de PHP, como [namespaces](https://secure.php.net/manual/es/language.namespaces.php)
y [traits](https://secure.php.net/manual/es/language.oop5.traits.php). Comprender estos conceptos te ayudará a entender mejor Yii 2.0.
Yii 2.0 hace uso también de las últimas características de PHP, como [namespaces](https://www.php.net/manual/es/language.namespaces.php)
y [traits](https://www.php.net/manual/es/language.oop5.traits.php). Comprender estos conceptos te ayudará a entender mejor Yii 2.0.

4
docs/guide-es/output-client-scripts.md

@ -30,7 +30,7 @@ en vez de agregar uno nuevo. En caso de no proveerlo, el código JS en sí será
Un script externo puede ser agregado de esta manera:
```php
$this->registerJsFile('http://example.com/js/main.js', ['depends' => [\yii\web\JqueryAsset::className()]]);
$this->registerJsFile('http://example.com/js/main.js', ['depends' => [\yii\web\JqueryAsset::class]]);
```
Los argumentos para [[yii\web\View::registerJsFile()|registerJsFile()]] son similares a los de
@ -77,7 +77,7 @@ Si necesitas asegurarte que haya sólo una etiqueta style utiliza el cuarto argu
```php
$this->registerCssFile("http://example.com/css/themes/black-and-white.css", [
'depends' => [BootstrapAsset::className()],
'depends' => [BootstrapAsset::class],
'media' => 'print',
], 'css-print-theme');
```

12
docs/guide-es/rest-authentication.md

@ -19,7 +19,7 @@ Hay muchas maneras de enviar una token (pieza) de acceso:
que no usen las cabeceras HTTP para enviar piezas de acceso.
* [OAuth 2](http://oauth.net/2/): la pieza de acceso es obtenida por el consumidor por medio de una autorización del servidor
y enviada al API del servidor según el protocolo
OAuth 2 [tokens HTTP del portador](http://tools.ietf.org/html/rfc6750).
OAuth 2 [tokens HTTP del portador](https://datatracker.ietf.org/doc/html/rfc6750).
Yii soporta todos los métodos anteriores de autenticación. Puedes crear nuevos métodos de autenticación de una forma fácil.
@ -57,7 +57,7 @@ public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator'] = [
'class' => HttpBasicAuth::className(),
'class' => HttpBasicAuth::class,
];
return $behaviors;
}
@ -75,11 +75,11 @@ public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator'] = [
'class' => CompositeAuth::className(),
'class' => CompositeAuth::class,
'authMethods' => [
HttpBasicAuth::className(),
HttpBearerAuth::className(),
QueryParamAuth::className(),
HttpBasicAuth::class,
HttpBearerAuth::class,
QueryParamAuth::class,
],
];
return $behaviors;

2
docs/guide-es/rest-controllers.md

@ -69,7 +69,7 @@ public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator'] = [
'class' => HttpBasicAuth::className(),
'class' => HttpBasicAuth::class,
];
return $behaviors;
}

2
docs/guide-es/rest-quick-start.md

@ -9,7 +9,7 @@ En particular, Yii soporta las siguientes características sobre APIs RESTful;
* Formato de respuesta de negocio (soporta JSON y XML por defecto);
* Personalización de objetos serializados con soporte para campos de salida seleccionables;
* Formateo apropiado de colecciones de datos y validación de errores;
* Soporte para [HATEOAS](http://en.wikipedia.org/wiki/HATEOAS);
* Soporte para [HATEOAS](https://en.wikipedia.org/wiki/HATEOAS);
* Eficiente enrutamiento con una adecuada comprobación del verbo(verb) HTTP;
* Incorporado soporte para las `OPTIONS` y `HEAD` verbos;
* Autenticación y autorización;

2
docs/guide-es/rest-resources.md

@ -116,7 +116,7 @@ la petición `http://localhost/users?fields=id,email&expand=profile` puede devol
## Enlaces (Links) <span id="links"></span>
[HATEOAS](http://en.wikipedia.org/wiki/HATEOAS), es una abreviación de Hipermedia es el Motor del Estado de la Aplicación (Hypermedia as the Engine of Application State), promueve que las APIs RESTfull devuelvan información que permita a los clientes descubrir las acciones que soportan los recursos devueltos. El sentido de HATEOAS es devolver un conjunto de hiperenlaces con relación a la información, cuando los datos de los recursos son servidos por las APIs.
[HATEOAS](https://en.wikipedia.org/wiki/HATEOAS), es una abreviación de Hipermedia es el Motor del Estado de la Aplicación (Hypermedia as the Engine of Application State), promueve que las APIs RESTfull devuelvan información que permita a los clientes descubrir las acciones que soportan los recursos devueltos. El sentido de HATEOAS es devolver un conjunto de hiperenlaces con relación a la información, cuando los datos de los recursos son servidos por las APIs.
Las clases con recursos pueden soportar HATEOAS implementando el interfaz [[yii\web\Linkable]] . El interfaz contiene sólo un método [[yii\web\Linkable::getLinks()|getLinks()]] el cual debe de de devolver una lista de [[yii\web\Link|links]].
Típicamente, debes devolver al menos un enlace `self` representando la URL al mismo recurso objeto. Por ejemplo,

2
docs/guide-es/rest-response-formatting.md

@ -5,7 +5,7 @@ Cuando se maneja una petición al API RESTful, una aplicación realiza usualment
con el formato de la respuesta:
1. Determinar varios factores que pueden afectar al formato de la respuesta, como son el tipo de medio, lenguaje, versión, etc.
Este proceso es también conocido como [negociación de contenido (content negotiation)](http://en.wikipedia.org/wiki/Content_negotiation).
Este proceso es también conocido como [negociación de contenido (content negotiation)](https://en.wikipedia.org/wiki/Content_negotiation).
2. La conversión de objetos recurso en arrays, como está descrito en la sección [Recursos (Resources)](rest-resources.md).
Esto es realizado por la clase [[yii\rest\Serializer]].
3. La conversión de arrays en cadenas con el formato determinado por el paso de negociación de contenido. Esto es

2
docs/guide-es/rest-versioning.md

@ -5,7 +5,7 @@ Una buena API ha de ser *versionada*: los cambios y las nuevas características
las APIs están destinadas a ser usadas por los clientes fuera de tu control. Por esta razón, compatibilidad hacia atrás (BC Backward compatibility)
de las APIs ha de ser mantenida siempre que sea posible. Si es necesario un cambio que puede romper la BC, debes de introducirla en la nueva versión del API, e incrementar el número de versión. Los clientes que la usan pueden continuar usando la antigua versión de trabajo del API; los nuevos y actualizados clientes pueden obtener la nueva funcionalidad de la nueva versión del API.
> Tip: referirse a [Semántica del versionado](http://semver.org/)
> Tip: referirse a [Semántica del versionado](https://semver.org/)
para más información en el diseño del número de versión del API.
Una manera común de implementar el versionado de la API es embeber el número de versión en las URLs de la API.

2
docs/guide-es/runtime-bootstrapping.md

@ -19,6 +19,6 @@ Debido a que el trabajo de bootstrapping se tiene que ejecutar antes de gestiona
Intenta no registrar demasiados componentes de bootstrapping. Un componente de bootstrapping sólo es necesario si tiene que interaccionar en todo el ciclo de vida de la gestión de la petición. Por ejemplo, si un modulo necesita registrar reglas de análisis de URL adicionales, se debe incluirse en la [propiedad bootstrap](structure-applications.md#bootstrap) para que la nueva regla de URL tenga efecto antes de que sea utilizada para resolver peticiones.
En modo de producción, hay que habilitar la cache bytecode, así como [APC](https://secure.php.net/manual/es/book.apc.php), para minimizar el tiempo necesario para incluir y analizar archivos PHP.
En modo de producción, hay que habilitar la cache bytecode, así como [APC](https://www.php.net/manual/es/book.apc.php), para minimizar el tiempo necesario para incluir y analizar archivos PHP.
Algunas grandes aplicaciones tienen [configuraciones](concept-configurations.md) de aplicación muy complejas que están dividida en muchos archivos de configuración más pequeños.

10
docs/guide-es/runtime-responses.md

@ -236,11 +236,11 @@ puede terminar antes mientras el servidor Web envía el fichero. Para usar esta
[[yii\web\Response::xSendFile()]]. La siguiente lista resume como habilitar la característica `X-Sendfile` para
algunos servidores Web populares.
- Apache: [X-Sendfile](http://tn123.org/mod_xsendfile)
- Lighttpd v1.4: [X-LIGHTTPD-send-file](http://redmine.lighttpd.net/projects/lighttpd/wiki/X-LIGHTTPD-send-file)
- Lighttpd v1.5: [X-Sendfile](http://redmine.lighttpd.net/projects/lighttpd/wiki/X-LIGHTTPD-send-file)
- Nginx: [X-Accel-Redirect](http://wiki.nginx.org/XSendfile)
- Cherokee: [X-Sendfile and X-Accel-Redirect](http://www.cherokee-project.com/doc/other_goodies.html#x-sendfile)
- Apache: [X-Sendfile](https://tn123.org/mod_xsendfile)
- Lighttpd v1.4: [X-LIGHTTPD-send-file](https://redmine.lighttpd.net/projects/lighttpd/wiki/X-LIGHTTPD-send-file)
- Lighttpd v1.5: [X-Sendfile](https://redmine.lighttpd.net/projects/lighttpd/wiki/X-LIGHTTPD-send-file)
- Nginx: [X-Accel-Redirect](https://www.nginx.com/resources/wiki/start/topics/examples/xsendfile/)
- Cherokee: [X-Sendfile and X-Accel-Redirect](https://www.cherokee-project.com/doc/other_goodies.html#x-sendfile)
## Enviar la Respuesta <span id="sending-response"></span>

6
docs/guide-es/runtime-sessions-cookies.md

@ -120,8 +120,8 @@ Por defecto la clase [[yii\web\Session]] almacena los datos de sesión como fich
* [[yii\web\DbSession]]: almacena los datos de sesión en una tabla en la base de datos.
* [[yii\web\CacheSession]]: almacena los datos de sesión en una caché con la ayuda de la configuración del [componente caché](caching-data.md#cache-components).
* [[yii\redis\Session]]: almacena los datos de sesión usando [redis](http://redis.io/) como medio de almacenamiento.
* [[yii\mongodb\Session]]: almacena los datos de sesión en [MongoDB](http://www.mongodb.org/).
* [[yii\redis\Session]]: almacena los datos de sesión usando [redis](https://redis.io/) como medio de almacenamiento.
* [[yii\mongodb\Session]]: almacena los datos de sesión en [MongoDB](https://www.mongodb.com/).
Todas estas clases de sesión soportan los mismos métodos de la API. Como consecuencia, puedes cambiar el uso de diferentes almacenamientos de sesión sin la necesidad de modificar el código de tu aplicación que usa sesiones.
@ -262,7 +262,7 @@ unset($cookies['language']);
Además de [[yii\web\Cookie::name|name]], [[yii\web\Cookie::value|value]] las propiedades que se muestran en los anteriores ejemplos, la clase [[yii\web\Cookie]] también define otras propiedades para representar toda la información posible de las cookies, tal como [[yii\web\Cookie::domain|domain]], [[yii\web\Cookie::expire|expire]]. Puedes configurar estas propiedades según sea necesario para preparar una cookie y luego añadirlo a la colección de cookies de la respuesta.
> Note: Para mayor seguridad, el valor por defecto de [[yii\web\Cookie::httpOnly]] es `true`. Esto ayuda a mitigar el riesgo del acceso a la cookie protegida por script desde el lado del cliente (si el navegador lo soporta). Puedes leer el [httpOnly wiki article](https://www.owasp.org/index.php/HttpOnly) para más detalles.
> Note: Para mayor seguridad, el valor por defecto de [[yii\web\Cookie::httpOnly]] es `true`. Esto ayuda a mitigar el riesgo del acceso a la cookie protegida por script desde el lado del cliente (si el navegador lo soporta). Puedes leer el [httpOnly wiki article](https://owasp.org/www-community/HttpOnly) para más detalles.
### Validación de la Cookie <span id="cookie-validation"></span>

10
docs/guide-es/security-authorization.md

@ -25,7 +25,7 @@ class SiteController extends Controller
{
return [
'access' => [
'class' => AccessControl::className(),
'class' => AccessControl::class,
'only' => ['login', 'logout', 'signup'],
'rules' => [
[
@ -70,7 +70,7 @@ Puedes personalizar este comportamiento configurando la propiedad [[yii\filters\
```php
[
'class' => AccessControl::className(),
'class' => AccessControl::class,
...
'denyCallback' => function ($rule, $action) {
throw new \Exception('No tienes los suficientes permisos para acceder a esta página');
@ -126,7 +126,7 @@ class SiteController extends Controller
{
return [
'access' => [
'class' => AccessControl::className(),
'class' => AccessControl::class,
'only' => ['special-callback'],
'rules' => [
[
@ -153,10 +153,10 @@ class SiteController extends Controller
## Control de Acceso Basado en Roles (RBAC) <span id="rbac"></span>
El Control de Acceso Basado en Roles (RBAC) provee una simple pero poderosa manera centralizada de control de acceso. Por favos consulta
la [Wikipedia](http://en.wikipedia.org/wiki/Role-based_access_control) para más detalles sobre comparar RBAC
la [Wikipedia](https://en.wikipedia.org/wiki/Role-based_access_control) para más detalles sobre comparar RBAC
con otros mecanismos de control de acceso más tradicionales.
Yii implementa una Jerarquía General RBAC, siguiendo el [modelo NIST RBAC](http://csrc.nist.gov/rbac/sandhu-ferraiolo-kuhn-00.pdf).
Yii implementa una Jerarquía General RBAC, siguiendo el [modelo NIST RBAC](https://csrc.nist.gov/CSRC/media/Publications/conference-paper/1992/10/13/role-based-access-controls/documents/ferraiolo-kuhn-92.pdf).
Esto provee la funcionalidad RBAC a través de [componente de la aplicación](structure-application-components.md) [[yii\rbac\ManagerInterface|authManager]].
Utilizar RBAC envuelve dos cosas. La primera es construir los datos de autorización RBAC, y la segunda

2
docs/guide-es/security-passwords.md

@ -7,7 +7,7 @@ pero el hardware moderno hace posible que ese tipo de hash e incluso más fuerte
Para poder proveer de una seguridad mayor para los passwords de los usuarios, incluso en el peor de los escenarios (tu aplicación sufre una brecha de seguridad),
necesitas utilizar un algoritmo que resista los ataques de fuerza bruta. La mejor elección actualmente es `bcrypt`.
En PHP, puedes generar un hash `bcrypt` utilizando la [función crypt](https://secure.php.net/manual/en/function.crypt.php). Yii provee
En PHP, puedes generar un hash `bcrypt` utilizando la [función crypt](https://www.php.net/manual/en/function.crypt.php). Yii provee
dos funciones auxiliares que hacen que `crypt` genere y verifique los hash más fácilmente.
Cuando un usuario provee un password por primera vez (por ej., en la registración), dicho password necesita ser pasado por un hash:

2
docs/guide-es/start-databases.md

@ -49,7 +49,7 @@ Al final, tendrás una base de datos llamada `yii2basic`, y dentro de esta, una
Configurar una conexión a la Base de Datos <span id="configuring-db-connection"></span>
------------------------------------------
Asegúrate de tener instalado la extensión de PHP [PDO](https://secure.php.net/manual/es/book.pdo.php) y el driver
Asegúrate de tener instalado la extensión de PHP [PDO](https://www.php.net/manual/es/book.pdo.php) y el driver
de PDO para el motor que estés utilizando (ej. `pdo_mysql` para MySQL). Este es un requisito básico si tu aplicación
va a utilizar bases de datos relacionales.

2
docs/guide-es/start-hello.md

@ -88,7 +88,7 @@ es llamado en una acción, buscará un archivo PHP llamado `views/ControllerID/N
Nota que en el código de arriba, el parámetro `message` es procesado por [[yii\helpers\Html::encode()|HTML-encoded]]
antes de ser impreso. Esto es necesario ya que el parámetro viene de un usuario final, haciéndolo vulnerable a
[ataques cross-site scripting (XSS)](http://es.wikipedia.org/wiki/Cross-site_scripting) pudiendo inyectar código de Javascript malicioso dentro del parámetro.
[ataques cross-site scripting (XSS)](https://es.wikipedia.org/wiki/Cross-site_scripting) pudiendo inyectar código de Javascript malicioso dentro del parámetro.
Naturalmente, puedes colocar mas contenido en la vista `say`. El contenido puede consistir de etiquetas HTML, texto plano, e inclusive código PHP.
De hecho, la vista `say` es sólo un script PHP que es ejecutado por el método [[yii\web\Controller::render()|render()]].

14
docs/guide-es/start-installation.md

@ -44,7 +44,7 @@ composer global require "fxp/composer-asset-plugin:^1.4.1"
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
```
El primer comando instala [composer asset plugin](https://github.com/francoispluchino/composer-asset-plugin/),
El primer comando instala [composer asset plugin](https://github.com/fxpio/composer-asset-plugin),
que permite administrar dependencias de paquetes bower y npm a través de Composer. Sólo necesitas ejecutar este comando
una vez. El segundo comando instala Yii en un directorio llamado `basic`. Puedes elegir un nombre de directorio diferente si así lo deseas.
@ -67,7 +67,7 @@ Instalar desde un Archivo Comprimido <span id="installing-from-archive-file"></s
Instalar Yii desde un archivo comprimido involucra tres pasos:
1. Descargar el archivo desde [yiiframework.com](http://www.yiiframework.com/download/yii2-basic).
1. Descargar el archivo desde [yiiframework.com](https://www.yiiframework.com/download/yii2-basic).
2. Descomprimirlo en un directorio accesible vía Web.
3. Modificar el archivo `config/web.php` introduciendo una clave secreta para el ítem de configuración `cookieValidationKey`
(esto se realiza automáticamente si estás instalando Yii a través de Composer):
@ -97,7 +97,7 @@ Verificando las Instalación <span id="verifying-installation"></span>
---------------------------
Una vez finalizada la instalación, o bien configura tu servidor web (mira la sección siguiente) o utiliza
el [servidor web incluido en PHP](https://secure.php.net/manual/en/features.commandline.webserver.php) ejecutando el siguiente
el [servidor web incluido en PHP](https://www.php.net/manual/en/features.commandline.webserver.php) ejecutando el siguiente
comando de consola estando parado en el directorio `web` de la aplicación:
```bash
@ -131,7 +131,7 @@ de PHP satisfaga los requerimientos de Yii. Esto puedes hacerlo usando cualquier
```
Deberías configurar tu instalación de PHP para que satisfaga los requisitos mínimos de Yii. Lo que es más importante,
debes tener PHP 5.4 o mayor. También deberías instalar la [Extensión de PHP PDO](https://secure.php.net/manual/es/pdo.installation.php)
debes tener PHP 5.4 o mayor. También deberías instalar la [Extensión de PHP PDO](https://www.php.net/manual/es/pdo.installation.php)
y el correspondiente driver de base de datos (como `pdo_mysql` para bases de datos MySQL), si tu aplicación lo necesitara.
@ -142,8 +142,8 @@ Configurar Servidores Web <span id="configuring-web-servers"></span>
de poner la aplicación en un servidor de producción.
La aplicación instalada siguiendo las instrucciones mencionadas debería estar lista para usar tanto
con un [servidor HTTP Apache](http://httpd.apache.org/) como con un [servidor HTTP Nginx](http://nginx.org/),
en Windows, Mac OS X, o Linux utilizando PHP 5.4 o mayor. Yii 2.0 también es compatible con [HHVM](http://hhvm.com/)
con un [servidor HTTP Apache](https://httpd.apache.org/) como con un [servidor HTTP Nginx](https://nginx.org/),
en Windows, Mac OS X, o Linux utilizando PHP 5.4 o mayor. Yii 2.0 también es compatible con [HHVM](https://hhvm.com/)
de Facebook. De todos modos, hay algunos casos donde HHVM se comporta diferente del
PHP oficial, por lo que tendrás que tener cuidados extra al utilizarlo.
@ -187,7 +187,7 @@ DocumentRoot "path/to/basic/web"
### Configuración Recomendada de Nginx <span id="recommended-nginx-configuration"></span>
Para utilizar [Nginx](http://wiki.nginx.org/), debes instalar PHP como un [FPM SAPI](https://secure.php.net/install.fpm).
Para utilizar [Nginx](https://wiki.nginx.org/), debes instalar PHP como un [FPM SAPI](https://www.php.net/install.fpm).
Utiliza la siguiente configuración de Nginx, reemplazando `path/to/basic/web` con la ruta real a
`basic/web` y `mysite.test` con el hostname real a servir.

16
docs/guide-es/start-looking-ahead.md

@ -9,27 +9,27 @@ código automáticamente. Utilizar Gii para la generación de código transforma
Esta sección resumirá los recursos disponibles de Yii que te ayudarán a ser más productivo al utilizar el framework.
* Documentación
- [La Guía Definitiva](http://www.yiiframework.com/doc-2.0/guide-README.html):
- [La Guía Definitiva](https://www.yiiframework.com/doc-2.0/guide-README.html):
Como su nombre lo indica, la guía define precisamente cómo debería trabajar Yii y provee guías generales
acerca de su utilización. Es el tutorial más importante de Yii, y el que deberías leer
antes de escribir cualquier código en Yii.
- [La Referencia de Clases](http://www.yiiframework.com/doc-2.0/index.html):
- [La Referencia de Clases](https://www.yiiframework.com/doc-2.0/index.html):
Esta especifica el uso de cada clase provista por Yii. Debería ser utilizada principalmente cuando estás escribiendo
código y deseas entender el uso de una clase, método o propiedad en particular. El uso de la referencia de clases es mejor luego de un entendimiento contextual del framework.
- [Los Artículos de la Wiki](http://www.yiiframework.com/wiki/?tag=yii2):
- [Los Artículos de la Wiki](https://www.yiiframework.com/wiki/?tag=yii2):
Los artículos de la wiki son escritos por usuarios de Yii basados en sus propias experiencias. La mayoría de ellos están escritos
como recetas de cocina, y muestran cómo resolver problemas particulares utilizando Yii. Si bien la calidad de estos
puede no ser tan buena como la de la Guía Definitiva, son útiles ya que cubren un espectro muy amplio
de temas y puede proveer a menudo soluciones listas para usar.
- [Libros](http://www.yiiframework.com/doc/)
* [Extensiones](http://www.yiiframework.com/extensions/):
- [Libros](https://www.yiiframework.com/books)
* [Extensiones](https://www.yiiframework.com/extensions/):
Yii puede hacer alarde de una librería de miles de extensiones contribuidas por usuarios, que pueden fácilmente conectadas a tu aplicación, haciendo que el desarrollo de la misma sea todavía más fácil y rápido.
* Comunidad
- Foro: <http://www.yiiframework.com/forum/>
- Chat IRC: El canal #yii en la red freenode (<irc://irc.freenode.net/yii>)
- Foro: <https://forum.yiiframework.com/>
- Chat IRC: El canal #yii en la red Libera (<ircs://irc.libera.chat:6697/yii>)
- Chat Gitter: <https://gitter.im/yiisoft/yii2>
- GitHub: <https://github.com/yiisoft/yii2>
- Facebook: <https://www.facebook.com/groups/yiitalk/>
- Twitter: <https://twitter.com/yiiframework>
- LinkedIn: <https://www.linkedin.com/groups/yii-framework-1483367>
- Stackoverflow: <http://stackoverflow.com/questions/tagged/yii2>
- Stackoverflow: <https://stackoverflow.com/questions/tagged/yii2>

6
docs/guide-es/start-prerequisites.md

@ -6,11 +6,11 @@ pero todavía hay algunas cosas que debería aprender antes de empezar con Yii.
## PHP
Yii es un _framework_ (base estructurada de desarrollo) en PHP, así que asegúrese de
[leer y comprender la referencia del lenguaje](https://secure.php.net/manual/es/langref.php).
[leer y comprender la referencia del lenguaje](https://www.php.net/manual/es/langref.php).
Al desarrollar con Yii deberá escribir código de manera orientada a objetos, así que
asegúrese de estar familiarizado con
[clases y objetos](https://secure.php.net/manual/es/language.oop5.basic.php) así como con
[espacios de nombres](https://secure.php.net/manual/es/language.namespaces.php).
[clases y objetos](https://www.php.net/manual/es/language.oop5.basic.php) así como con
[espacios de nombres](https://www.php.net/manual/es/language.namespaces.php).
## Programación orientada a objetos

4
docs/guide-es/start-workflow.md

@ -42,7 +42,7 @@ Estructura de la aplicación <span id="application-structure"></span>
Los archivos y directorios más importantes en tu aplicación son (asumiendo que la raíz de la aplicación es `basic`):
```
```js
basic/ base path de la aplicación
composer.json archivo utilizado por Composer, describe información de sus paquetes y librerías
config/ contiene la configuración de las aplicaciones (y otras)
@ -63,7 +63,7 @@ basic/ base path de la aplicación
En general, los archivos de la aplicación pueden ser divididos en dos: aquellos bajo `basic/web` y aquellos bajo otros directorios.
Los primeros pueden accederse directo por HTTP (ej., en un navegador), mientras que los últimos no pueden ni deben ser accedidos así.
Yii implementa el patrón de diseño [modelo-vista-controlador (MVC)](http://wikipedia.org/wiki/Model-view-controller),
Yii implementa el patrón de diseño [modelo-vista-controlador (MVC)](https://wikipedia.org/wiki/Model-view-controller),
que es reflejado en la estructura de directorios utilizada. El directorio `models` contiene todas las [clases del modelo](structure-models.md),
el directorio `views` contiene todas las [vistas (templates)](structure-views.md), y el directorio `controllers` contiene
todas las [clases de controladores](structure-controllers.md).

6
docs/guide-es/structure-applications.md

@ -255,7 +255,7 @@ incluido la traducción de mensajes, formato de fecha y números, etc. Por ejemp
utilizará el valor de esta propiedad para determinar en qué idioma el calendario debe ser mostrado y cómo dar formato
a la fecha.
Se recomienda que especifiques el idioma en términos de una [Código de idioma IETF](http://es.wikipedia.org/wiki/Código_de_idioma_IETF).
Se recomienda que especifiques el idioma en términos de una [Código de idioma IETF](https://es.wikipedia.org/wiki/Código_de_idioma_IETF).
Por ejemplo, `en` se refiere a English, mientras que `en-US` se refiere a English (United States).
Se pueden encontrar más detalles de este aspecto en la sección [Internacionalización](tutorial-i18n.md).
@ -326,7 +326,7 @@ sin necesidad de tocar el código que lo utiliza.
Esta propiedad especifica el idioma en el cual la aplicación está escrita. El valor por defecto es `'en-US'`,
referido a English (United States). Deberías configurar esta propiedad si el contenido de texto en tu código no está en inglés.
Como la propiedad [language](#language), deberías configurar esta propiedad siguiendo el [Código de idioma IETF](http://es.wikipedia.org/wiki/Código_de_idioma_IETF).
Como la propiedad [language](#language), deberías configurar esta propiedad siguiendo el [Código de idioma IETF](https://es.wikipedia.org/wiki/Código_de_idioma_IETF).
Por ejemplo, `en` se refiere a English, mientras que `en-US` se refiere a English (United States).
Puedes encontrar más detalles de esta propiedad en la sección [Internacionalización](tutorial-i18n.md).
@ -335,7 +335,7 @@ Puedes encontrar más detalles de esta propiedad en la sección [Internacionaliz
#### [[yii\base\Application::timeZone|timeZone]] <span id="timeZone"></span>
Esta propiedad es provista como una forma alternativa de definir el `time zone` de PHP por defecto en tiempo de ejecución.
Configurando esta propiedad, escencialmente estás llamando a la función de PHP [date_default_timezone_set()](https://secure.php.net/manual/es/function.date-default-timezone-set.php).
Configurando esta propiedad, escencialmente estás llamando a la función de PHP [date_default_timezone_set()](https://www.php.net/manual/es/function.date-default-timezone-set.php).
Por ejemplo:
```php

26
docs/guide-es/structure-assets.md

@ -74,7 +74,7 @@ A continuación se explicarán más detalladamente las propiedades del [[yii\web
se puede determinar anteponiendo [[yii\web\AssetManager::basePath]] a la ruta relativa, y la URL actual de un
archivo puede ser determinada anteponiendo [[yii\web\AssetManager::baseUrl]] a la ruta relativa.
- una URL absoluta que represente un archivo JavaScript externo. Por ejemplo,
`http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js` o
`https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js` o
`//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js`.
* [[yii\web\AssetBundle::css|css]]: un array que lista los archivos CSS que contiene este bundle. El formato de este
array es el mismo que el de [[yii\web\AssetBundle::js|js]].
@ -202,12 +202,12 @@ class FontAwesomeAsset extends AssetBundle
}
```
El ejemplo anterior define un asset bundle para el ["fontawesome" package](http://fontawesome.io/). Especificando
El ejemplo anterior define un asset bundle para el ["fontawesome" package](https://fontawesome.com/). Especificando
la opción de publicación `beforeCopy`, solo los subdirectorios `fonts` y `css` serán publicados.
### Bower y NPM Assets <span id="bower-npm-assets"></span>
La mayoría de paquetes JavaScript/CSS se gestionan con [Bower](http://bower.io/) y/o [NPM](https://www.npmjs.org/).
La mayoría de paquetes JavaScript/CSS se gestionan con [Bower](https://bower.io/) y/o [NPM](https://www.npmjs.com/).
Si tu aplicación o extensión usa estos paquetes, se recomienda seguir los siguientes pasos para gestionar los assets en
la librería:
@ -393,8 +393,8 @@ personalizar como se describe en la subsección [Personalización de Asset Bundl
En lugar de escribir código CSS y/o JavaScript directamente, los desarrolladores a menudo escriben código usando una
sintaxis extendida y usan herramientas especiales para convertirlos en CSS/JavaScript. Por ejemplo, para código CSS se
puede usar [LESS](http://lesscss.org) o [SCSS](http://sass-lang.com/); y para JavaScript se puede usar
[TypeScript](http://www.typescriptlang.org/).
puede usar [LESS](https://lesscss.org) o [SCSS](https://sass-lang.com/); y para JavaScript se puede usar
[TypeScript](https://www.typescriptlang.org/).
Se pueden listar los archivos asset con sintaxis extendida (extended syntax) en [[yii\web\AssetBundle::css|css]] y
[[yii\web\AssetBundle::js|js]] en un asset bundle. Por ejemplo:
@ -425,14 +425,14 @@ en la página, en lugar de los assets originales en sintaxis extendidas.
Yii usa las extensiones de archivo para identificar que sintaxis extendida se está usando. De forma predeterminada se
reconocen las siguientes sintaxis y extensiones de archivo.
- [LESS](http://lesscss.org/): `.less`
- [SCSS](http://sass-lang.com/): `.scss`
- [Stylus](http://learnboost.github.io/stylus/): `.styl`
- [CoffeeScript](http://coffeescript.org/): `.coffee`
- [TypeScript](http://www.typescriptlang.org/): `.ts`
- [LESS](https://lesscss.org/): `.less`
- [SCSS](https://sass-lang.com/): `.scss`
- [Stylus](https://stylus-lang.com/): `.styl`
- [CoffeeScript](https://coffeescript.org/): `.coffee`
- [TypeScript](https://www.typescriptlang.org/): `.ts`
Yii se basa en las herramientas pre-procesadoras instalada para convertir los assets. Por ejemplo, para usar
[LESS](http://lesscss.org/) se debe instalar el comando pre-procesador `lessc`.
[LESS](https://lesscss.org/) se debe instalar el comando pre-procesador `lessc`.
Se pueden personalizar los comandos de los pre-procesadores y las sintaxis extendidas soportadas configurando
[[yii\web\AssetManager::converter]] como en el siguiente ejemplo:
@ -460,7 +460,7 @@ Los tokens `{from}` y `{to}` en los comandos se reemplazarán por las rutas de o
de destino de los archivos asset.
> Info: Hay otras maneras de trabajar con las assets de sintaxis extendidas, además de la descrita
anteriormente. Por ejemplo, se pueden usar herramientas generadoras tales como [grunt](http://gruntjs.com/) para
anteriormente. Por ejemplo, se pueden usar herramientas generadoras tales como [grunt](https://gruntjs.com/) para
monitorear y convertir automáticamente los assets de sintaxis extendidas. En este caso, se deben listar los archivos
CSS/JavaScript resultantes en lugar de los archivos de originales.
@ -641,5 +641,5 @@ El archivo de configuración generado se puede incluir en la configuración de l
anterior subsección.
> Info: Usar el comando `asset` no es la única opción de automatizar el proceso de combinación y compresión.
Se puede usar la excelente herramienta de ejecución de tareas [grunt](http://gruntjs.com/) para lograr el mismo
Se puede usar la excelente herramienta de ejecución de tareas [grunt](https://gruntjs.com/) para lograr el mismo
objetivo.

2
docs/guide-es/structure-controllers.md

@ -1,7 +1,7 @@
Controladores
=============
Los controladores son parte del patrón o arquitectura [MVC](http://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlador).
Los controladores son parte del patrón o arquitectura [MVC](https://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlador).
Son objetos que extienden de [[yii\base\Controller]] y se encargan de procesar los `requests` (consultas)
generando `responses` (respuestas). Particularmente, después de tomar el control desde las [aplicaciones](structure-applications.md),
los controladores analizarán los datos que entran en el `request`, los pasan a los [modelos](structure-models.md), inyectan los

4
docs/guide-es/structure-entry-scripts.md

@ -56,9 +56,9 @@ De la misma manera, el siguiente código es el script de entrada para la [aplica
/**
* Yii console bootstrap file.
*
* @link http://www.yiiframework.com/
* @link https://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
* @license https://www.yiiframework.com/license/
*/
defined('YII_DEBUG') or define('YII_DEBUG', true);

42
docs/guide-es/structure-extensions.md

@ -81,7 +81,7 @@ En algunas ocasiones excepcionales es posible que tengamos que instalar alguna o
3. descargar e instalar todas las extensiones dependientes como siguiendo estas mismas instrucciones.
Si una extensión no proporciona clase de autocarga pero sigue el estándar
[PSR-4](http://www.php-fig.org/psr/psr-4/), se puede usar la clase de autocarga proporcionada por Yii para cargar
[PSR-4](https://www.php-fig.org/psr/psr-4/), se puede usar la clase de autocarga proporcionada por Yii para cargar
automáticamente las clases de las extensiones. Todo lo que se tiene que hacer es declarar un
[alias de raíz (root)](concept-aliases.md#defining-aliases) para las extensiones del directorio raíz. Por ejemplo,
asumiendo que tenemos instalada una extensión en el directorio `vendor/mycompany/myext`, y las clases de extensión se
@ -135,9 +135,9 @@ muestra el archivo `composer.json` para la extensión `yiisoft/yii2-imagine`:
"license": "BSD-3-Clause",
"support": {
"issues": "https://github.com/yiisoft/yii2/issues?labels=ext%3Aimagine",
"forum": "http://www.yiiframework.com/forum/",
"wiki": "http://www.yiiframework.com/wiki/",
"irc": "irc://irc.freenode.net/yii",
"forum": "https://forum.yiiframework.com/",
"wiki": "https://www.yiiframework.com/wiki/",
"irc": "ircs://irc.libera.chat:6697/yii",
"source": "https://github.com/yiisoft/yii2"
},
"authors": [
@ -193,8 +193,8 @@ La extensión depende de Yii (por supuesto). Por ello se debe añadir (`yiisoft/
apropiadas (ej. `1.*`, `@stable`) para cada paquete dependiente. Se deben usar dependencias estables en versiones
estables de nuestras extensiones.
La mayoría de paquetes JavaScript/CSS se gestionan usando [Bower](http://bower.io/) y/o [NPM](https://www.npmjs.org/),
en lugar de Composer. Yii utiliza el [Composer asset plugin](https://github.com/francoispluchino/composer-asset-plugin)
La mayoría de paquetes JavaScript/CSS se gestionan usando [Bower](https://bower.io/) y/o [NPM](https://www.npmjs.com/),
en lugar de Composer. Yii utiliza el [Composer asset plugin](https://github.com/fxpio/composer-asset-plugin)
para habilitar la gestión de estos tipos de paquetes a través de Composer. Si la extensión depende de un paquete
Bower, se puede, simplemente, añadir la dependencia de el archivo `composer.json` como se muestra a continuación:
@ -248,8 +248,8 @@ extensiones de alta calidad.
#### Namespaces <span id="namespaces"></span>
Para evitar colisiones de nombres y permitir que las clases usen la autocarga en extensiones propias, se deben usar
namespaces y nombres de clase siguiendo el [estándar PSR-4](http://www.php-fig.org/psr/psr-4/) o el
[estándar PSR-0](http://www.php-fig.org/psr/psr-0/).
namespaces y nombres de clase siguiendo el [estándar PSR-4](https://www.php-fig.org/psr/psr-4/) o el
[estándar PSR-0](https://www.php-fig.org/psr/psr-0/).
Los namespaces de clases propias deben empezar por `NombreProveedor\NombreExtension` donde `NombreExtension` es
similar al nombre del paquete pero este no debe contener el prefijo `yii2-`. Por ejemplo, para la extensión
@ -359,7 +359,7 @@ pruebas unitarias (unit tests), pruebas de aceptación (acceptance tests) y prue
#### Versiones <span id="versioning"></span>
Se debe asignar un número de versión cada vez que se lance una nueva distribución. (ej. `1.0.1`). Recomendamos
seguir la práctica [Versionamiento Semántico](http://semver.org/lang/es/) para determinar que números se deben usar.
seguir la práctica [Versionamiento Semántico](https://semver.org/lang/es/) para determinar que números se deben usar.
#### Lanzamientos <span id="releasing"></span>
@ -375,7 +375,7 @@ En los lanzamientos de una extensión, además de archivos de código, también
mencionados a continuación para facilitar a otra gente el uso de nuestra extensión:
* Un archivo léame (readme) en el directorio raíz: describe que hace la extensión y como instalarla y utilizarla.
Recomendamos que se escriba en formato [Markdown](http://daringfireball.net/projects/markdown/) y llamarlo
Recomendamos que se escriba en formato [Markdown](https://daringfireball.net/projects/markdown/) y llamarlo
`readme.md`.
* Un archivo de registro de cambios (changelog) en el directorio raíz: enumera que cambios se realizan en cada
lanzamiento. El archivo puede escribirse en formato Markdown y llamarlo `changelog.md`.
@ -392,7 +392,7 @@ mencionados a continuación para facilitar a otra gente el uso de nuestra extens
> Info: Aunque no es un requerimiento, se recomienda que la extensión se adhiera a ciertos estilos de
codificación. Se puede hacer referencia a
[estilo de código del núcleo del framework](https://github.com/yiisoft/yii2/wiki/Core-framework-code-style) para
[estilo de código del núcleo del framework](https://github.com/yiisoft/yii2/blob/master/docs/internals/core-code-style.md) para
obtener más detalles.
## Extensiones del Núcleo <span id="core-extensions"></span>
@ -406,14 +406,12 @@ se describe en la subsección [Uso de Extensiones](#using-extensions)
- [yiisoft/yii2-authclient](https://github.com/yiisoft/yii2-authclient):proporciona un conjunto de clientes de
autorización tales como el cliente OAuth2 de Facebook, el cliente GitHub OAuth2.
- [yiisoft/yii2-bootstrap](https://github.com/yiisoft/yii2-bootstrap): proporciona un conjunto de widgets que
encapsulan los componentes y plugins de [Bootstrap](http://getbootstrap.com/).
- [yiisoft/yii2-codeception](https://github.com/yiisoft/yii2-codeception): proporciona soporte de testing basado en
[Codeception](http://codeception.com/).
encapsulan los componentes y plugins de [Bootstrap](https://getbootstrap.com/).
- [yiisoft/yii2-debug](https://github.com/yiisoft/yii2-debug): proporciona soporte de depuración para aplicaciones
Yii. Cuando se usa esta extensión, aparece una barra de herramientas de depuración en la parte inferior de cada
página. La extensión también proporciona un conjunto de páginas para mostrar información detallada de depuración.
- [yiisoft/yii2-elasticsearch](https://github.com/yiisoft/yii2-elasticsearch): proporciona soporte para usar
[Elasticsearch](http://www.elasticsearch.org/). Incluye soporte básico para realizar consultas/búsquedas y también
[Elasticsearch](https://www.elastic.co/). Incluye soporte básico para realizar consultas/búsquedas y también
implementa patrones de [Active Record](db-active-record.md) que permiten y permite guardar los `active records` en
Elasticsearch.
- [yiisoft/yii2-faker](https://github.com/yiisoft/yii2-faker): proporciona soporte para usar
@ -423,20 +421,20 @@ se describe en la subsección [Uso de Extensiones](#using-extensions)
- [yiisoft/yii2-httpclient](https://github.com/yiisoft/yii2-httpclient):
provides an HTTP client.
- [yiisoft/yii2-imagine](https://github.com/yiisoft/yii2-imagine): proporciona funciones comunes de manipulación de
imágenes basadas en [Imagine](http://imagine.readthedocs.org/).
imágenes basadas en [Imagine](https://imagine.readthedocs.org/).
- [yiisoft/yii2-jui](https://github.com/yiisoft/yii2-jui): proporciona un conjunto de widgets que encapsulan las
iteraciones y widgets de [JQuery UI](http://jqueryui.com/).
iteraciones y widgets de [JQuery UI](https://jqueryui.com/).
- [yiisoft/yii2-mongodb](https://github.com/yiisoft/yii2-mongodb): proporciona soporte para utilizar
[MongoDB](http://www.mongodb.org/). incluye características como consultas básicas, Active Record, migraciones,
[MongoDB](https://www.mongodb.com/). incluye características como consultas básicas, Active Record, migraciones,
caching, generación de código, etc.
- [yiisoft/yii2-redis](https://github.com/yiisoft/yii2-redis): proporciona soporte para utilizar
[redis](http://redis.io/). incluye características como consultas básicas, Active Record, caching, etc.
[redis](https://redis.io/). incluye características como consultas básicas, Active Record, caching, etc.
- [yiisoft/yii2-smarty](https://github.com/yiisoft/yii2-smarty): proporciona un motor de plantillas basado en
[Smarty](http://www.smarty.net/).
[Smarty](https://www.smarty.net/).
- [yiisoft/yii2-sphinx](https://github.com/yiisoft/yii2-sphinx): proporciona soporte para utilizar
[Sphinx](http://sphinxsearch.com). incluye características como consultas básicas, Active Record, code generation,
[Sphinx](https://sphinxsearch.com). incluye características como consultas básicas, Active Record, code generation,
etc.
- [yiisoft/yii2-swiftmailer](https://github.com/yiisoft/yii2-swiftmailer): proporciona características de envío de
correos electrónicos basadas en [swiftmailer](http://swiftmailer.org/).
- [yiisoft/yii2-twig](https://github.com/yiisoft/yii2-twig): proporciona un motor de plantillas basado en
[Twig](http://twig.sensiolabs.org/).
[Twig](https://twig.symfony.com/).

28
docs/guide-es/structure-filters.md

@ -124,7 +124,7 @@ public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'class' => AccessControl::class,
'only' => ['create', 'update'],
'rules' => [
// permitido para usuarios autenticados
@ -145,8 +145,8 @@ Para conocer más detalles acerca del control de acceso en general, refiérase a
### Filtros del Método de Autenticación <span id="auth-method-filters"></span>
Los filtros del método de autenticación se usan para autenticar a un usuario utilizando varios métodos, tales como la
[Autenticación de acceso básico HTTP](http://es.wikipedia.org/wiki/Autenticaci%C3%B3n_de_acceso_b%C3%A1sica),
[Oauth 2](http://oauth.net/2/). Estas clases de filtros se encuentran en el espacio de nombres `yii\filters\auth`.
[Autenticación de acceso básico HTTP](https://es.wikipedia.org/wiki/Autenticaci%C3%B3n_de_acceso_b%C3%A1sica),
[Oauth 2](https://oauth.net/2/). Estas clases de filtros se encuentran en el espacio de nombres `yii\filters\auth`.
El siguiente ejemplo muestra como usar [[yii\filters\auth\HttpBasicAuth]] para autenticar un usuario usando un token
de acceso basado en el método de Autenticación de acceso básico HTTP. Tenga en cuenta que para que esto funcione, la
@ -160,7 +160,7 @@ public function behaviors()
{
return [
'basicAuth' => [
'class' => HttpBasicAuth::className(),
'class' => HttpBasicAuth::class,
],
];
}
@ -185,7 +185,7 @@ public function behaviors()
{
return [
[
'class' => ContentNegotiator::className(),
'class' => ContentNegotiator::class,
'formats' => [
'application/json' => Response::FORMAT_JSON,
'application/xml' => Response::FORMAT_XML,
@ -212,7 +212,7 @@ use yii\web\Response;
[
'bootstrap' => [
[
'class' => ContentNegotiator::className(),
'class' => ContentNegotiator::class,
'formats' => [
'application/json' => Response::FORMAT_JSON,
'application/xml' => Response::FORMAT_XML,
@ -242,7 +242,7 @@ public function behaviors()
{
return [
[
'class' => HttpCache::className(),
'class' => HttpCache::class,
'only' => ['index'],
'lastModified' => function ($action, $params) {
$q = new \yii\db\Query();
@ -270,11 +270,11 @@ public function behaviors()
{
return [
'pageCache' => [
'class' => PageCache::className(),
'class' => PageCache::class,
'only' => ['index'],
'duration' => 60,
'dependency' => [
'class' => DbDependency::className(),
'class' => DbDependency::class,
'sql' => 'SELECT COUNT(*) FROM post',
],
'variations' => [
@ -290,7 +290,7 @@ Por favor refiérase a [Caché de Páginas](caching-page.md) para obtener más d
### [[yii\filters\RateLimiter|RateLimiter]] <span id="rate-limiter"></span>
RateLimiter implementa un algoritmo de para limitar la tasa de descarga basándose en
[leaky bucket algorithm](http://en.wikipedia.org/wiki/Leaky_bucket). Este se utiliza sobre todo en la implementación
[leaky bucket algorithm](https://en.wikipedia.org/wiki/Leaky_bucket). Este se utiliza sobre todo en la implementación
de APIs RESTful. Por favor, refiérase a la sección [limite de tasa](rest-rate-limiting.md) para obtener más detalles
acerca de el uso de este filtro.
@ -307,7 +307,7 @@ public function behaviors()
{
return [
'verbs' => [
'class' => VerbFilter::className(),
'class' => VerbFilter::class,
'actions' => [
'index' => ['get'],
'view' => ['get'],
@ -339,7 +339,7 @@ public function behaviors()
{
return ArrayHelper::merge([
[
'class' => Cors::className(),
'class' => Cors::class,
],
], parent::behaviors());
}
@ -366,7 +366,7 @@ public function behaviors()
{
return ArrayHelper::merge([
[
'class' => Cors::className(),
'class' => Cors::class,
'cors' => [
'Origin' => ['http://www.myserver.net'],
'Access-Control-Request-Method' => ['GET', 'HEAD', 'OPTIONS'],
@ -387,7 +387,7 @@ public function behaviors()
{
return ArrayHelper::merge([
[
'class' => Cors::className(),
'class' => Cors::class,
'cors' => [
'Origin' => ['http://www.myserver.net'],
'Access-Control-Request-Method' => ['GET', 'HEAD', 'OPTIONS'],

6
docs/guide-es/structure-models.md

@ -2,7 +2,7 @@ Modelos
=======
Los modelos forman parte de la arquitectura
[MVC](http://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlador). Son objetos que representan datos de
[MVC](https://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlador). Son objetos que representan datos de
negocio, reglas y lógica.
Se pueden crear clases modelo extendiendo a [[yii\base\Model]] o a sus clases hijas. La clase base [[yii\base\Model]]
@ -39,8 +39,8 @@ echo $model->name;
```
También se puede acceder a los atributos como se accede a los elementos de un array, gracias al soporte para
[ArrayAccess](https://secure.php.net/manual/es/class.arrayaccess.php) y
[ArrayIterator](https://secure.php.net/manual/es/class.arrayiterator.php) que brinda [[yii\base\Model]]:
[ArrayAccess](https://www.php.net/manual/es/class.arrayaccess.php) y
[ArrayIterator](https://www.php.net/manual/es/class.arrayiterator.php) que brinda [[yii\base\Model]]:
```php
$model = new \app\models\ContactForm;

2
docs/guide-es/structure-modules.md

@ -14,7 +14,7 @@ módulo. Dentro de este directorio, hay subdirectorios tales como 'controllers',
controladores, modelos, vistas y otro código, exactamente como una aplicación. El siguiente ejemplo muestra el
contenido dentro de un módulo:
```
```js
forum/
Module.php archivo clase módulo
controllers/ contiene archivos de la clase controlador

2
docs/guide-es/structure-overview.md

@ -1,7 +1,7 @@
Información general
===================
Las aplicaciones realizadas con Yii están organizadas de acuerdo al patrón de diseño [modelo-vista-controlador (MVC)](http://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlador). Los
Las aplicaciones realizadas con Yii están organizadas de acuerdo al patrón de diseño [modelo-vista-controlador (MVC)](https://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlador). Los
[modelos](structure-models.md) representan datos, la lógica de negocios y sus reglas; las [vistas](structure-views.md)
son la representación de salida de los modelos; y finalmente, los [controladores](structure-controllers.md) que toman datos de entrada y los convierten en instrucciones para los [modelos](structure-models.md) y [vistas](structure-views.md).

10
docs/guide-es/structure-views.md

@ -1,7 +1,7 @@
Vistas
======
Las Vistas (views) son una parte de la arquitectura [MVC](http://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlador).
Las Vistas (views) son una parte de la arquitectura [MVC](https://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlador).
Estas son el código responsable de presentar los datos al usuario final. En una aplicación Web, las vistas son usualmente creadas
en términos de *templates* que son archivos PHP que contienen principalmente HTML y PHP.
Estas son manejadas por el [componente de la aplicación](structure-application-components.md) [[yii\web\View|view]], el cual provee los métodos comúnmente utilizados
@ -52,7 +52,7 @@ o algún otro objeto que dispara la [renderización de la vista](#rendering-view
Al crear vistas que generan páginas HTML, es importante que codifiques (encode) y/o filtres los datos
provenientes de los usuarios antes de mostrarlos. De otro modo, tu aplicación puede estar expuesta
a ataques tipo [cross-site scripting](http://es.wikipedia.org/wiki/Cross-site_scripting).
a ataques tipo [cross-site scripting](https://es.wikipedia.org/wiki/Cross-site_scripting).
Para mostrar un texto plano, codifícalos previamente utilizando [[yii\helpers\Html::encode()]]. Por ejemplo, el siguiente código aplica
una codificación del nombre de usuario antes de mostrarlo:
@ -545,7 +545,7 @@ Los componentes de vista proveen las siguientes características útiles, cada u
* [manejo de scripts del cliente](output-client-scripts.md): soporte para registro y renderización de CSS y JavaScript.
* [manejo de asset bundle](structure-assets.md): soporte de registro y renderización de [asset bundles](structure-assets.md).
* [motores de template alternativos](tutorial-template-engines.md): te permite utilizar otros motores de templates, como
[Twig](http://twig.sensiolabs.org/) o [Smarty](http://www.smarty.net/).
[Twig](https://twig.symfony.com/) o [Smarty](https://www.smarty.net/).
Puedes también utilizar frecuentemente el siguiente menor pero útil grupo de características al desarrollar páginas Web.
@ -616,14 +616,14 @@ $this->registerLinkTag([
'title' => 'Noticias en Vivo de Yii',
'rel' => 'alternate',
'type' => 'application/rss+xml',
'href' => 'http://www.yiiframework.com/rss.xml/',
'href' => 'https://www.yiiframework.com/rss.xml/',
]);
```
El resultado del código es el siguiente:
```html
<link title="Noticias en Vivo de Yii" rel="alternate" type="application/rss+xml" href="http://www.yiiframework.com/rss.xml/">
<link title="Noticias en Vivo de Yii" rel="alternate" type="application/rss+xml" href="https://www.yiiframework.com/rss.xml/">
```
Al igual que con [[yii\web\View::registerMetaTag()|registerMetaTags()]], puedes especificar una clave al llamar

2
docs/guide-es/structure-widgets.md

@ -72,7 +72,7 @@ Hay que tener en cuenta que, a diferencia de [[yii\base\Widget::widget()]] que d
representación resultante del _widget_, el método [[yii\base\Widget::begin()]] devuelve una
instancia del _widget_, que se puede usar para generar el contenido del _widget_.
> Nota: Algunos _widgets_ utilizan un [búfer de salida](https://secure.php.net/manual/es/book.outcontrol.php)
> Nota: Algunos _widgets_ utilizan un [búfer de salida](https://www.php.net/manual/es/book.outcontrol.php)
> para ajustar el contenido rodeado al invocar [[yii\base\Widget::end()]]. Por este motivo se espera
> que las llamadas a [[yii\base\Widget::begin()]] y [[yii\base\Widget::end()]] tengan lugar en el
> mismo fichero de vista.

4
docs/guide-es/test-acceptance.md

@ -9,8 +9,8 @@ servida por un servidor web.
Los tests de aceptación se implementan con ayuda del _framework_ Codeception, que tiene
una buena documentación:
- [Codeception para el _framework_ Yii](http://codeception.com/for/yii)
- [Tests funcionales de Codeception](http://codeception.com/docs/04-FunctionalTests)
- [Codeception para el _framework_ Yii](https://codeception.com/for/yii)
- [Tests funcionales de Codeception](https://codeception.com/docs/04-FunctionalTests)
## Ejecución de tests en las plantillas básica y avanzada

4
docs/guide-es/test-fixtures.md

@ -108,7 +108,7 @@ Arriba te mostramos cómo definir un fixture de BD. Para definir un fixture no r
Utilizar Fixtures
-----------------
Si estás utilizando [Codeception](http://codeception.com/) para hacer tests de tu código, deberías considerar el utilizar
Si estás utilizando [Codeception](https://codeception.com/) para hacer tests de tu código, deberías considerar el utilizar
la extensión `yii2-codeception`, que tiene soporte incorporado para la carga y acceso a fixtures.
En caso de que utilices otros frameworks de testing, puedes usar [[yii\test\FixtureTrait]] en tus casos de tests
para alcanzar el mismo objetivo.
@ -129,7 +129,7 @@ class UserProfileTest extends DbTestCase
public function fixtures()
{
return [
'profiles' => UserProfileFixture::className(),
'profiles' => UserProfileFixture::class,
];
}

4
docs/guide-es/test-functional.md

@ -14,8 +14,8 @@ web especial o una interfaz de usuario compleja en Javascript.
Las pruebas funcionales se implementan con ayuda del _framework_ Codeception, que tiene
una buena documentación:
- [Codeception para el _framework_ Yii](http://codeception.com/for/yii)
- [Tests funcionales de Codeception](http://codeception.com/docs/04-FunctionalTests)
- [Codeception para el _framework_ Yii](https://codeception.com/for/yii)
- [Tests funcionales de Codeception](https://codeception.com/docs/04-FunctionalTests)
## Ejecución de tests en las plantillas básica y avanzada

6
docs/guide-es/test-unit.md

@ -8,9 +8,9 @@ Normalmente los tests unitarios son desarrollados por la persona que escribe las
Los tests unitarios en Yii están construidos en base a PHPUnit y, opcionalmente, Codeception, por lo que se recomienda consultar su respectiva documentación:
- [Codeception para el _framework_ Yii](http://codeception.com/for/yii)
- [Tests unitarios con Codeception](http://codeception.com/docs/05-UnitTests)
- [Documentación de PHPUnit, empezando por el capítulo 2](http://phpunit.de/manual/current/en/writing-tests-for-phpunit.html)
- [Codeception para el _framework_ Yii](https://codeception.com/for/yii)
- [Tests unitarios con Codeception](https://codeception.com/docs/05-UnitTests)
- [Documentación de PHPUnit, empezando por el capítulo 2](https://phpunit.de/manual/current/en/writing-tests-for-phpunit.html)
## Ejecución de tests en las plantillas básica y avanzada

4
docs/guide-es/tutorial-core-validators.md

@ -95,8 +95,8 @@ Este validador comprueba si el valor de entrada es una fecha, tiempo or fecha/ti
Opcionalmente, puede convertir el valor de entrada en una fecha/tiempo UNIX y almacenarla en un atributo especificado vía [[yii\validators\DateValidator::timestampAttribute|timestampAttribute]].
- `format`: el formato fecha/tiempo en el que debe estar el valor a ser validado.
Esto tiene que ser un patrón fecha/tiempo descrito en [manual ICU](http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax).
Alternativamente tiene que ser una cadena con el prefijo `php:` representando un formato que ha de ser reconocido por la clase `Datetime` de PHP. Por favor, refiérase a <https://secure.php.net/manual/en/datetime.createfromformat.php> sobre los formatos soportados.
Esto tiene que ser un patrón fecha/tiempo descrito en [manual ICU](https://unicode-org.github.io/icu/userguide/format_parse/datetime/#datetime-format-syntax).
Alternativamente tiene que ser una cadena con el prefijo `php:` representando un formato que ha de ser reconocido por la clase `Datetime` de PHP. Por favor, refiérase a <https://www.php.net/manual/en/datetime.createfromformat.php> sobre los formatos soportados.
Si no tiene ningún valor, ha de coger el valor de `Yii::$app->formatter->dateFormat`.
- `timestampAttribute`: el nombre del atributo al cual este validador puede asignar el fecha/hora UNIX convertida desde la entrada fecha/hora.

2
docs/guide-es/tutorial-start-from-scratch.md

@ -39,7 +39,7 @@ Luego, pasa a modificar la estructura y contenido de la aplicación como te gust
Hacer un Paquete
----------------
Con el template definido, crea un repositorio Git a partir de él, y sube tus archivos ahí. Si tu template va a ser de código abierto, [Github](http://github.com) es el mejor lugar para alojarlo. Si tu intención es que el template no sea colaborativo, cualquier sitio de repositorios Git servirá.
Con el template definido, crea un repositorio Git a partir de él, y sube tus archivos ahí. Si tu template va a ser de código abierto, [Github](https://github.com) es el mejor lugar para alojarlo. Si tu intención es que el template no sea colaborativo, cualquier sitio de repositorios Git servirá.
Ahora, necesitas registrar tu paquete para Composer. Para templates públicos, el paquete debe ser registrado en [Packagist](https://packagist.org/).
Para templates privados, es un poco más complicado registrarlo. Puedes ver instrucciones para hacerlo en la [documentación de Composer](https://getcomposer.org/doc/05-repositories.md#hosting-your-own).

2
docs/guide-es/tutorial-template-engines.md

@ -2,7 +2,7 @@ Usar motores de plantillas
==========================
Por defecto, Yii utiliza PHP como su lenguaje de plantilla, pero puedes configurar Yii para que soporte otros motores de renderizado, tal como
[Twig](http://twig.sensiolabs.org/) o [Smarty](http://www.smarty.net/), disponibles como extensiones.
[Twig](https://twig.symfony.com/) o [Smarty](https://www.smarty.net/), disponibles como extensiones.
El componente `view` es el responsable de renderizar las vistas. Puedes agregar un motor de plantillas personalizado reconfigurando
el comportamiento (behavior) de este componente:

6
docs/guide-es/tutorial-yii-integration.md

@ -41,7 +41,7 @@ Si la librería lleva su propio cargador automático (autoloader), puedes instal
Es recomendable que la instalación se termine antes de incluir el fichero `Yii.php` de forma que el cargador automático tenga precedencia al cargar
de forma automática las clases.
Si la librería no provee un cargador automático de clases, pero la denominación de sus clases sigue el [PSR-4](http://www.php-fig.org/psr/psr-4/),
Si la librería no provee un cargador automático de clases, pero la denominación de sus clases sigue el [PSR-4](https://www.php-fig.org/psr/psr-4/),
puedes usar el cargador automático de Yii para cargar de forma automática las clases. Todo lo que necesitas
es declarar un [alias raíz](concept-aliases.md#defining-aliases) para cada espacio de nombres (namespace) raiz usado en sus clases. Por ejemplo,
asume que has instalado una librería en el directorio `vendor/foo/bar`, y que las clases de la librería están bajo el espacio de nombres raiz `xyz`.
@ -86,7 +86,7 @@ para instalar Yii:
composer require yiisoft/yii2
composer install
El primer comando instala el [composer asset plugin](https://github.com/francoispluchino/composer-asset-plugin/),
El primer comando instala el [composer asset plugin](https://github.com/fxpio/composer-asset-plugin),
que permite administrar paquetes bower y npm a través de Composer. Incluso si sólo quieres utilizar la capa de base de datos
u otra característica de Yii no relacionada a assets, requiere que instales el paquete composer de Yii.
@ -108,7 +108,7 @@ a la sección `extra` de tu `composer.json`:
Visita también la [sección de cómo instalar Yii](start-installation.md#installing-via-composer) para más información
sobre Composer y sobre cómo solucionar posibles problemas que surjan durante la instalación.
En otro caso, puedes [descargar](http://www.yiiframework.com/download/) el archivo de la edición de Yii
En otro caso, puedes [descargar](https://www.yiiframework.com/download/) el archivo de la edición de Yii
y desempaquetarla en el directorio `BasePath/vendor`.
Después, debes de modificar el script de entrada de sistema de terceros para incluir el siguiente código al principio:

2
docs/guide-fr/README.md

@ -1,7 +1,7 @@
Guide définitif pour Yii 2.0
============================
Ce guide est soumis aux [Conditions de la Documentation de Yii](http://www.yiiframework.com/doc/terms/).
Ce guide est soumis aux [Conditions de la Documentation de Yii](https://www.yiiframework.com/doc/terms/).
Tous droits réservés.

20
docs/guide-fr/caching-data.md

@ -49,7 +49,7 @@ $data = $cache->getOrSet($key, function () use ($user_id) {
La mise en cache s'appuie sur ce qu'on appelle les *composants de mise en cache* qui représentent des supports de mise en cache tels que les mémoires, les fichiers et les bases de données.
Les composants de mise en cache sont généralement enregistrés en tant que [composants d'application](structure-application-components.md) de façon à ce qu'ils puissent être configurables et accessibles globalement. Le code qui suit montre comment configurer le composant d'application `cache` pour qu'il utilise [memcached](http://memcached.org/) avec deux serveurs de cache :
Les composants de mise en cache sont généralement enregistrés en tant que [composants d'application](structure-application-components.md) de façon à ce qu'ils puissent être configurables et accessibles globalement. Le code qui suit montre comment configurer le composant d'application `cache` pour qu'il utilise [memcached](https://memcached.org/) avec deux serveurs de cache :
```php
'components' => [
@ -91,18 +91,18 @@ Comme tous les composants de mise en cache prennent en charge le même jeux d'AP
Yii prend en charge un large panel de supports de stockage pour cache. Ce qui suit est un résumé :
* [[yii\caching\ApcCache]]: utilise l'extension PHP [APC](https://secure.php.net/manual/en/book.apc.php). Cette option peut être considérée comme la plus rapide lorsqu'on utilise un cache pour une grosse application centralisée (p. ex. un serveur, pas d'équilibrage de charge dédié, etc.).
* [[yii\caching\ApcCache]]: utilise l'extension PHP [APC](https://www.php.net/manual/en/book.apcu.php). Cette option peut être considérée comme la plus rapide lorsqu'on utilise un cache pour une grosse application centralisée (p. ex. un serveur, pas d'équilibrage de charge dédié, etc.).
* [[yii\caching\DbCache]]: utilise une table de base de données pour stocker les données en cache. Pour utiliser ce cache, vous devez créer une table comme spécifié dans [[yii\caching\DbCache::cacheTable]].
* [[yii\caching\DummyCache]]: tient lieu de cache à remplacer qui n'assure pas de mise en cache réelle. Le but de ce composant est de simplifier le code qui a besoin de vérifier la disponibilité du cache. Par exemple, lors du développement ou si le serveur ne dispose pas de la prise en charge d'un cache, vous pouvez configurer un composant de mise en cache pour qu'il utilise ce cache. Lorsque la prise en charge réelle de la mise en cache est activée, vous pouvez basculer sur le composant de mise en cache correspondant. Dans les deux cas, vous pouvez utiliser le même code `Yii::$app->cache->get($key)` pour essayer de retrouver les données du cache sans vous préoccuper du fait que `Yii::$app->cache` puisse être `null`.
* [[yii\caching\FileCache]]: utilise des fichiers standards pour stocker les données en cache. Cela est particulièrement adapté à la mise en cache de gros blocs de données, comme le contenu d'une page.
* [[yii\caching\MemCache]]: utilise le [memcache](https://secure.php.net/manual/en/book.memcache.php) PHP et l'extension [memcached](https://secure.php.net/manual/en/book.memcached.php). Cette option peut être considérée comme la plus rapide lorsqu'on utilise un cache dans des applications distribuées (p. ex. avec plusieurs serveurs, l'équilibrage de charge, etc.).
* [[yii\redis\Cache]]: met en œuvre un composant de mise en cache basé sur un stockage clé-valeur [Redis](http://redis.io/)
* [[yii\caching\MemCache]]: utilise le [memcache](https://www.php.net/manual/en/book.memcache.php) PHP et l'extension [memcached](https://www.php.net/manual/en/book.memcached.php). Cette option peut être considérée comme la plus rapide lorsqu'on utilise un cache dans des applications distribuées (p. ex. avec plusieurs serveurs, l'équilibrage de charge, etc.).
* [[yii\redis\Cache]]: met en œuvre un composant de mise en cache basé sur un stockage clé-valeur [Redis](https://redis.io/)
(une version de redis égale ou supérieure à 2.6.12 est nécessaire).
* [[yii\caching\WinCache]]: utilise le [WinCache](http://iis.net/downloads/microsoft/wincache-extension) PHP
([voir aussi l'extension](https://secure.php.net/manual/en/book.wincache.php)).
* [[yii\caching\XCache]] _(deprecated)_: utilise l'extension PHP [XCache](http://xcache.lighttpd.net/).
* [[yii\caching\WinCache]]: utilise le [WinCache](https://iis.net/downloads/microsoft/wincache-extension) PHP
([voir aussi l'extension](https://www.php.net/manual/en/book.wincache.php)).
* [[yii\caching\XCache]] _(deprecated)_: utilise l'extension PHP [XCache](https://en.wikipedia.org/wiki/List_of_PHP_accelerators#XCache).
* [[yii\caching\ZendDataCache]] _(deprecated)_: utilise le
[cache de données Zend](http://files.zend.com/help/Zend-Server-6/zend-server.htm#data_cache_component.htm)
[cache de données Zend](https://files.zend.com/help/Zend-Server-6/zend-server.htm#data_cache_component.htm)
en tant que médium de cache sous-jacent.
@ -248,11 +248,11 @@ $result = Customer::getDb()->cache(function ($db) {
});
```
> Info : quelques systèmes de gestion de bases de données (DBMS) (p. ex. [MySQL](http://dev.mysql.com/doc/refman/5.1/en/query-cache.html))
> Info : quelques systèmes de gestion de bases de données (DBMS) (p. ex. [MySQL](https://dev.mysql.com/doc/refman/5.6/en/query-cache.html))
prennent également en charge la mise en cache de requêtes du côté serveur de base de données. Vous pouvez choisir d'utiliser l'un ou l'autre des ces mécanismes de mise en cache de requêtes. Les mises en cache de requêtes décrites ci-dessus offrent l'avantage de pouvoir spécifier des dépendances de mise en cache flexibles et sont potentiellement plus efficaces.
### Vidage du cache <span id="cache-flushing">
### Vidage du cache <span id="cache-flushing"></span>
Lorsque vous avez besoin d'invalider toutes les données stockées dans le cache, vous pouvez appeler [[yii\caching\Cache::flush()]].

4
docs/guide-fr/caching-http.md

@ -86,7 +86,7 @@ ETags vous autorise des stratégies de mises en cache plus complexes et/ou plus
Des génération coûteuses d'ETag peuvent contrecarrer l'objectif poursuivi en utilisant `HttpCache` et introduire une surcharge inutile, car il faut les réévaluer à chacune des requêtes. Essayez de trouver une expression simple qui invalide le cache si le contenu de la page a été modifié.
> Note : en conformité avec la norme [RFC 7232](http://tools.ietf.org/html/rfc7232#section-2.4),
> Note : en conformité avec la norme [RFC 7232](https://datatracker.ietf.org/doc/html/rfc7232#section-2.4),
`HttpCache` envoie les entêtes `ETag` et `Last-Modified` à la fois si ils sont tous deux configurés. Et si le client envoie les entêtes `If-None-Match` et `If-Modified-Since` à la fois, seul le premier est respecté.
@ -100,7 +100,7 @@ Cache-Control: public, max-age=3600
## Propriété "Session Cache Limiter" <span id="session-cache-limiter"></span>
Lorsqu'une page utilise une session, PHP envoie automatiquement quelques entêtes HTTP relatifs à la mise en cache comme spécifié dans la propriété `session.cache_limiter` de PHP INI. Ces entêtes peuvent interférer ou désactiver la mise en cache que vous voulez obtenir de `HttpCache`. Pour éviter ce problème, par défaut, `HttpCache` désactive l'envoi de ces entêtes automatiquement. Si vous désirez modifier ce comportement, vous devez configurer la propriété [[yii\filters\HttpCache::sessionCacheLimiter]]. Cette propriété accepte une chaîne de caractères parmi `public`, `private`, `private_no_expire` et `nocache`. Reportez-vous au manuel de PHP à propos de [session_cache_limiter()](https://secure.php.net/manual/en/function.session-cache-limiter.php) pour des explications sur ces valeurs.
Lorsqu'une page utilise une session, PHP envoie automatiquement quelques entêtes HTTP relatifs à la mise en cache comme spécifié dans la propriété `session.cache_limiter` de PHP INI. Ces entêtes peuvent interférer ou désactiver la mise en cache que vous voulez obtenir de `HttpCache`. Pour éviter ce problème, par défaut, `HttpCache` désactive l'envoi de ces entêtes automatiquement. Si vous désirez modifier ce comportement, vous devez configurer la propriété [[yii\filters\HttpCache::sessionCacheLimiter]]. Cette propriété accepte une chaîne de caractères parmi `public`, `private`, `private_no_expire` et `nocache`. Reportez-vous au manuel de PHP à propos de [session_cache_limiter()](https://www.php.net/manual/en/function.session-cache-limiter.php) pour des explications sur ces valeurs.
## Implications SEO <span id="seo-implications"></span>

4
docs/guide-fr/concept-aliases.md

@ -100,8 +100,8 @@ Yii prédéfinit un jeu d'alias pour faire référence à des chemins de fichier
- `@webroot`, le dossier Web racine de l'application en cours d'exécution. Il est déterminé en se basant sur le dossier qui contient le [script d'entrée](structure-entry-scripts.md).
- `@web`, l'URL de base de l'application en cours d'exécution. Cet alias a la même valeur que [[yii\web\Request::baseUrl]].
- `@vendor`, le [[yii\base\Application::vendorPath|dossier vendor de Composer]]. Valeur par défaut `@app/vendor`.
- `@bower`, le dossier racine des [paquets bower](http://bower.io/). Valeur par défaut `@vendor/bower`.
- `@npm`, le dossier racine des [paquets npm](https://www.npmjs.org/). Valeur par défaut `@vendor/npm`.
- `@bower`, le dossier racine des [paquets bower](https://bower.io/). Valeur par défaut `@vendor/bower`.
- `@npm`, le dossier racine des [paquets npm](https://www.npmjs.com/). Valeur par défaut `@vendor/npm`.
L'alias `@yii` est défini lorsque vous incluez le fichier `Yii.php` dans votre [script d'entrée](structure-entry-scripts.md). Les alias restants sont définis dans le constructeur de l'application au moment où la [configuration](concept-configurations.md) de l'application est appliquée.
.

4
docs/guide-fr/concept-autoloading.md

@ -1,7 +1,7 @@
Chargement automatique des classes
==================================
Yii compte sur le [mécanisme de chargement automatique des classes](https://secure.php.net/manual/en/language.oop5.autoload.php) pour localiser et inclure tous les fichiers de classes requis. Il fournit un chargeur automatique de classes de haute performance qui est conforme à la [norme PSR-4](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md). Le chargeur automatique est installé lorsque vous incluez le fichier `Yii.php`.
Yii compte sur le [mécanisme de chargement automatique des classes](https://www.php.net/manual/fr/language.oop5.autoload.php) pour localiser et inclure tous les fichiers de classes requis. Il fournit un chargeur automatique de classes de haute performance qui est conforme à la [norme PSR-4](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md). Le chargeur automatique est installé lorsque vous incluez le fichier `Yii.php`.
> Note: pour simplifier la description, dans cette section, nous ne parlerons que du chargement automatique des classes. Néanmoins, gardez présent à l'esprit que le contenu que nous décrivons ici s'applique aussi au chargement automatique des interfaces et des traits.
@ -11,7 +11,7 @@ Utilisation du chargeur automatique de Yii <span id="using-yii-autoloader"></spa
Pour utiliser le chargeur automatique de classes de Yii, vous devez suivre deux règles simples lorsque vous créez et nommez vos classes :
* Chaque classe doit être placée sous un [espace de noms](https://secure.php.net/manual/en/language.namespaces.php) (p. ex. `foo\bar\MyClass`)
* Chaque classe doit être placée sous un [espace de noms](https://www.php.net/manual/en/language.namespaces.php) (p. ex. `foo\bar\MyClass`)
* Chaque classe doit être sauvegardée sous forme d'un fichier individuel dont le chemin est déterminé par l'algorithme suivant :
```php

28
docs/guide-fr/concept-behaviors.md

@ -1,7 +1,7 @@
Comportements
=============
Les comportements (*behaviors* sont des instances de la classe [[yii\base\Behavior]], ou de ses classes filles. Les comportements, aussi connus sous le nom de [mixins](http://en.wikipedia.org/wiki/Mixin), vous permettent d'améliorer les fonctionnalités d'une classe de [[yii\base\Component|composant]] existante sans avoir à modifier les héritages de cette classe. Le fait d'attacher un comportement à un composant injecte les méthodes et les propriétés de ce comportement dans le composant, rendant ces méthodes et ces propriétés accessibles comme si elles avaient été définies dans la classe du composant lui-même. En outre, un comportement peut répondre aux [événements](concept-events.md) déclenchés par le composant, ce qui permet aux comportements de personnaliser l'exécution normale du code du composant.
Les comportements (*behaviors* sont des instances de la classe [[yii\base\Behavior]], ou de ses classes filles. Les comportements, aussi connus sous le nom de [mixins](https://en.wikipedia.org/wiki/Mixin), vous permettent d'améliorer les fonctionnalités d'une classe de [[yii\base\Component|composant]] existante sans avoir à modifier les héritages de cette classe. Le fait d'attacher un comportement à un composant injecte les méthodes et les propriétés de ce comportement dans le composant, rendant ces méthodes et ces propriétés accessibles comme si elles avaient été définies dans la classe du composant lui-même. En outre, un comportement peut répondre aux [événements](concept-events.md) déclenchés par le composant, ce qui permet aux comportements de personnaliser l'exécution normale du code du composant.
Définition des comportements <span id="defining-behaviors"></span>
@ -106,21 +106,21 @@ class User extends ActiveRecord
{
return [
// comportement anonyme, nom de la classe de comportement seulement
MyBehavior::className(),
MyBehavior::class,
// comportement nommé, nom de classe de comportement seulement
'myBehavior2' => MyBehavior::className(),
'myBehavior2' => MyBehavior::class,
// comportement anonyme, tableau de configuration
[
'class' => MyBehavior::className(),
'class' => MyBehavior::class,
'prop1' => 'value1',
'prop2' => 'value2',
],
// comportement nommé, tableau de configuration
'myBehavior4' => [
'class' => MyBehavior::className(),
'class' => MyBehavior::class,
'prop1' => 'value1',
'prop2' => 'value2',
]
@ -138,14 +138,14 @@ Pour attacher un comportement de manière dynamique, appelez la méthode [[yii\b
use app\components\MyBehavior;
// attache un objet comportement
$component->attachBehavior('myBehavior1', new MyBehavior);
$component->attachBehavior('myBehavior1', new MyBehavior());
// attache un classe de comportement
$component->attachBehavior('myBehavior2', MyBehavior::className());
$component->attachBehavior('myBehavior2', MyBehavior::class);
// attache un tableau de configuration
$component->attachBehavior('myBehavior3', [
'class' => MyBehavior::className(),
'class' => MyBehavior::class,
'prop1' => 'value1',
'prop2' => 'value2',
]);
@ -155,8 +155,8 @@ Vous pouvez attacher plusieurs comportements à la fois en utilisant la méthode
```php
$component->attachBehaviors([
'myBehavior1' => new MyBehavior, // un comportement nommé
MyBehavior::className(), // un comportement anonyme
'myBehavior1' => new MyBehavior(), // un comportement nommé
MyBehavior::class, // un comportement anonyme
]);
```
@ -164,10 +164,10 @@ Vous pouvez aussi attacher des comportements via les [configurations](concept-co
```php
[
'as myBehavior2' => MyBehavior::className(),
'as myBehavior2' => MyBehavior::class,
'as myBehavior3' => [
'class' => MyBehavior::className(),
'class' => MyBehavior::class,
'prop1' => 'value1',
'prop2' => 'value2',
],
@ -250,7 +250,7 @@ class User extends ActiveRecord
{
return [
[
'class' => TimestampBehavior::className(),
'class' => TimestampBehavior::class,
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'],
ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'],
@ -299,7 +299,7 @@ Il existe plusieurs comportements pré-inclus et extérieurs disponibles :
Comparaison des comportement et des traits <span id="comparison-with-traits"></span>
------------------------------------------
Bien que les comportements soient similaires aux [traits](https://secure.php.net/traits) par le fait qu'ils *injectent* tous deux leurs propriétés et leurs méthodes dans la classe primaire, ils diffèrent par de nombreux aspects. Comme nous l'expliquons ci-dessous, ils ont chacun leurs avantages et leurs inconvénients. Ils sont plus des compléments l'un envers l'autre, que des alternatives.
Bien que les comportements soient similaires aux [traits](https://www.php.net/traits) par le fait qu'ils *injectent* tous deux leurs propriétés et leurs méthodes dans la classe primaire, ils diffèrent par de nombreux aspects. Comme nous l'expliquons ci-dessous, ils ont chacun leurs avantages et leurs inconvénients. Ils sont plus des compléments l'un envers l'autre, que des alternatives.
### Raisons d'utiliser des comportements <span id="pros-for-behaviors"></span>

2
docs/guide-fr/concept-components.md

@ -67,7 +67,7 @@ Le respect de ces conseils rend vos composants [configurables](concept-configur
$component = new MyClass(1, 2, ['prop1' => 3, 'prop2' => 4]);
// alternatively
$component = \Yii::createObject([
'class' => MyClass::className(),
'class' => MyClass::class,
'prop1' => 3,
'prop2' => 4,
], [1, 2]);

4
docs/guide-fr/concept-di-container.md

@ -1,7 +1,7 @@
Conteneur d'injection de dépendances
====================================
Un conteneur d'injection de dépendances (DI container) est un objet qui sait comment instancier et configurer des objets et tous leurs objets dépendants. [Cet article de Martin Fowler](http://martinfowler.com/articles/injection.html) explique très bien en quoi un conteneur d'injection de dépendances est utile. Ici nous expliquons essentiellement l'utilisation qui est faite du conteneur d'injection de dépendances que fournit Yii.
Un conteneur d'injection de dépendances (DI container) est un objet qui sait comment instancier et configurer des objets et tous leurs objets dépendants. [Cet article de Martin Fowler](https://martinfowler.com/articles/injection.html) explique très bien en quoi un conteneur d'injection de dépendances est utile. Ici nous expliquons essentiellement l'utilisation qui est faite du conteneur d'injection de dépendances que fournit Yii.
Injection de dépendances <span id="dependency-injection"></span>
@ -461,7 +461,7 @@ Comme les dépendances sont nécessaires lorsque de nouveaux objets sont créés
Résumé <span id="summary"></span>
-------
L'injection de dépendances et le [localisateur de services](concept-service-locator.md) sont tous deux des modèles de conception populaires qui permettent des construire des logiciels d'une manière faiblement couplée et plus testable. Nous vous recommandons fortement de lire [l'article de Martin](http://martinfowler.com/articles/injection.html) pour acquérir une compréhension plus profonde de l'injection de dépendances et du localisateur de services.
L'injection de dépendances et le [localisateur de services](concept-service-locator.md) sont tous deux des modèles de conception populaires qui permettent des construire des logiciels d'une manière faiblement couplée et plus testable. Nous vous recommandons fortement de lire [l'article de Martin](https://martinfowler.com/articles/injection.html) pour acquérir une compréhension plus profonde de l'injection de dépendances et du localisateur de services.
Yii implémente son [localisateur de services](concept-service-locator.md) par dessus le conteneur d'injection de dépendances. Lorsqu'un localisateur de services essaye de créer une nouvelle instance d'un objet, il appelle le conteneur d'injection de dépendances. Ce dernier résout les dépendances automatiquement comme c'est expliqué plus haut.

16
docs/guide-fr/concept-events.md

@ -9,7 +9,7 @@ Yii introduit une classe de base appelée [[yii\base\Component]] pour prendre en
Gestionnaires d'événements <span id="event-handlers"></span>
--------------------------
Un gestionnaire d'événement est une [fonction de rappel PHP](https://secure.php.net/manual/en/language.types.callable.php) qui est exécutée lorsque l'événement à laquelle elle est attachée est déclenché. Vous pouvez utiliser n'importe laquelle des fonctions de rappel suivantes :
Un gestionnaire d'événement est une [fonction de rappel PHP](https://www.php.net/manual/en/language.types.callable.php) qui est exécutée lorsque l'événement à laquelle elle est attachée est déclenché. Vous pouvez utiliser n'importe laquelle des fonctions de rappel suivantes :
- une fonction PHP globale spécifiée sous forme de chaîne de caractères (sans les parenthèses) p. ex., `'trim'` ;
- une méthode d'objet spécifiée sous forme de tableau constitué d'un nom d'objet et d'un nom de méthode sous forme de chaîne de caractères (sans les parenthèses), p. ex., `[$object, 'methodName']`;
@ -185,7 +185,7 @@ use Yii;
use yii\base\Event;
use yii\db\ActiveRecord;
Event::on(ActiveRecord::className(), ActiveRecord::EVENT_AFTER_INSERT, function ($event) {
Event::on(ActiveRecord::class, ActiveRecord::EVENT_AFTER_INSERT, function ($event) {
Yii::debug(get_class($event->sender) . ' is inserted');
});
```
@ -199,11 +199,11 @@ Vous pouvez déclencher un événement au *niveau de la classe* en appelant la m
```php
use yii\base\Event;
Event::on(Foo::className(), Foo::EVENT_HELLO, function ($event) {
Event::on(Foo::class, Foo::EVENT_HELLO, function ($event) {
var_dump($event->sender); // displays "null"
});
Event::trigger(Foo::className(), Foo::EVENT_HELLO);
Event::trigger(Foo::class, Foo::EVENT_HELLO);
```
Notez que, dans ce cas, `$event->sender` fait référence au nom de la classe qui a déclenché l'événement plutôt qu'à une instance de classe.
@ -214,10 +214,10 @@ Pour détacher un gestionnaire attaché au niveau de la classe, appelez [[yii\b
```php
// détache $handler
Event::off(Foo::className(), Foo::EVENT_HELLO, $handler);
Event::off(Foo::class, Foo::EVENT_HELLO, $handler);
// détache tous les gestionnaires de Foo::EVENT_HELLO
Event::off(Foo::className(), Foo::EVENT_HELLO);
Event::off(Foo::class, Foo::EVENT_HELLO);
```
@ -271,10 +271,10 @@ Vous pouvez déclencher l'événement de ces classes :
```php
// trigger event for Dog class
Event::trigger(Dog::className(), DanceEventInterface::EVENT_DANCE);
Event::trigger(Dog::class, DanceEventInterface::EVENT_DANCE);
// trigger event for Developer class
Event::trigger(Developer::className(), DanceEventInterface::EVENT_DANCE);
Event::trigger(Developer::class, DanceEventInterface::EVENT_DANCE);
```
Notez bien que vous ne pouvez pas déclencher l'événement de toutes les classes qui implémentent l'interface :,

60
docs/guide-fr/db-active-record.md

@ -1,7 +1,7 @@
Enregistrement actif (*Active Record*)
=====================================
L'[enregistrement actif](http://en.wikipedia.org/wiki/Active_record_pattern) fournit une interface orientée objet pour accéder aux données stockées dans une base de données et les manipuler.
L'[enregistrement actif](https://en.wikipedia.org/wiki/Active_record_pattern) fournit une interface orientée objet pour accéder aux données stockées dans une base de données et les manipuler.
Une classe d'enregistrement actif (ActiveRecord) est associée à une table de base de données, une instance de cette classe représente une ligne de cette table, et un *attribut* d'une instance d'enregistrement actif représente la valeur d'une colonne particulière dans cette ligne.
Au lieu d'écrire des instructions SQL brutes,
vous pouvez accéder aux attributs de l'objet enregistrement actif et appeler ses méthodes pour accéder aux données stockées dans les tables de la base de données et les manipuler.
@ -35,7 +35,7 @@ Yii assure la prise en charge de l'enregistrement actif (*Active Record*) pour l
* Microsoft SQL Server 2008 ou versions postérieures : via [[yii\db\ActiveRecord]]
* Oracle : via [[yii\db\ActiveRecord]]
* CUBRID 9.3 ou versions postérieures : via [[yii\db\ActiveRecord]]
(Notez que, à cause d'un [bogue](http://jira.cubrid.org/browse/APIS-658) dans l'extension CUBRID 9.3, l'entourage des valeurs par des marques de citation ne fonctionne pas, c'est pourquoi vous avez besoin de CUBRID 9.3 à la fois comme client et comme serveur)
(Notez que, à cause d'un [bogue](https://jira.cubrid.org/browse/APIS-658) dans l'extension CUBRID 9.3, l'entourage des valeurs par des marques de citation ne fonctionne pas, c'est pourquoi vous avez besoin de CUBRID 9.3 à la fois comme client et comme serveur)
* Sphinx : via [[yii\sphinx\ActiveRecord]], requiert l'extension `yii2-sphinx`
* ElasticSearch : via [[yii\elasticsearch\ActiveRecord]], requiert l'extension `yii2-elasticsearch`
@ -472,9 +472,9 @@ ou la méthode [[yii\db\ActiveRecord::getOldAttribute()|getOldAttribute()]].
Cela est souvent le cas lorsque le modèle reçoit des entrées utilisateur de formulaires HTML ou chacune des valeurs est représentée par une chaîne de caractères.
Pour garantir le type correct pour p. ex. des valeurs entières, vous devez appliquer un [filtre de validation](input-validation.md#data-filtering):
> `['attributeName', 'filter', 'filter' => 'intval']`.
Cela fonctionne pour toutes les fonctions de transformation de type de PHP comme [intval()](https://secure.php.net/manual/en/function.intval.php),
[floatval()](https://secure.php.net/manual/en/function.floatval.php),
[boolval](https://secure.php.net/manual/en/function.boolval.php), etc...
Cela fonctionne pour toutes les fonctions de transformation de type de PHP comme [intval()](https://www.php.net/manual/en/function.intval.php),
[floatval()](https://www.php.net/manual/en/function.floatval.php),
[boolval](https://www.php.net/manual/en/function.boolval.php), etc...
### Valeurs d'attribut par défaut <span id="default-attribute-values"></span>
@ -688,7 +688,7 @@ try {
```
> Note : dans le code précédent, nous utilisons deux blocs de capture pour être compatible avec PHP 5.x et PHP 7.x.
`\Exception` met en œuvre l'[interface `\Throwable`](https://secure.php.net/manual/en/class.throwable.php)
`\Exception` met en œuvre l'[interface `\Throwable`](https://www.php.net/manual/en/class.throwable.php)
> à partir de PHP 7.0, c'est pourquoi vous pouvez sauter la partie avec `\Exception` si votre application utilise PHP 7.0 ou une version plus récente.
La deuxième façon consiste à lister les opérations de base de données qui nécessitent une prise en charge transactionnelle dans la méthode [[yii\db\ActiveRecord::transactions()]].
@ -788,9 +788,15 @@ use yii\behaviors\OptimisticLockBehavior;
public function behaviors()
{
return [
OptimisticLockBehavior::className(),
OptimisticLockBehavior::class,
];
}
public function optimisticLock()
{
return 'version';
}
```
> Note : comme [[\yii\behaviors\OptimisticLockBehavior|OptimisticLockBehavior]] garantit que l'enregistrement n'est sauvegardé que
> si l'utilisateur soumet un numéro de version valide en analysant directement [[\yii\web\Request::getBodyParam()|getBodyParam()]],
@ -820,7 +826,7 @@ class Customer extends ActiveRecord
public function getOrders()
{
return $this->hasMany(Order::className(), ['customer_id' => 'id']);
return $this->hasMany(Order::class, ['customer_id' => 'id']);
}
}
@ -830,7 +836,7 @@ class Order extends ActiveRecord
public function getCustomer()
{
return $this->hasOne(Customer::className(), ['id' => 'customer_id']);
return $this->hasOne(Customer::class, ['id' => 'customer_id']);
}
}
```
@ -847,7 +853,7 @@ En déclarant une relation, vous devez spécifier les informations suivantes :
soit la méthode [[yii\db\ActiveRecord::hasOne()|hasOne()]].
Dans l'exemple ci-dessus vous pouvez facilement déduire en lisant la déclaration des relations qu'un client a beaucoup de commandes, tandis qu'une commande n'a qu'un client.
- le nom de la classe d'enregistrement actif : spécifié comme le premier paramètre de [[yii\db\ActiveRecord::hasMany()|hasMany()]] ou de [[yii\db\ActiveRecord::hasOne()|hasOne()]].
Une pratique conseillée est d'appeler `Xyz::className()`
Une pratique conseillée est d'appeler `Xyz::class`
pour obtenir la chaîne de caractères représentant le nom de la classe de manière à bénéficier
de l'auto-complètement de l'EDI et de la détection d'erreur dans l'étape de compilation.
- Le lien entre les deux types de données : spécifie le(s) colonne(s) via lesquelles les deux types de données sont en relation.
@ -926,7 +932,7 @@ class Customer extends ActiveRecord
{
public function getBigOrders($threshold = 100)
{
return $this->hasMany(Order::className(), ['customer_id' => 'id'])
return $this->hasMany(Order::class, ['customer_id' => 'id'])
->where('subtotal > :threshold', [':threshold' => $threshold])
->orderBy('id');
}
@ -961,7 +967,7 @@ class Order extends ActiveRecord
{
public function getItems()
{
return $this->hasMany(Item::className(), ['id' => 'item_id'])
return $this->hasMany(Item::class, ['id' => 'item_id'])
->viaTable('order_item', ['order_id' => 'id']);
}
}
@ -974,12 +980,12 @@ class Order extends ActiveRecord
{
public function getOrderItems()
{
return $this->hasMany(OrderItem::className(), ['order_id' => 'id']);
return $this->hasMany(OrderItem::class, ['order_id' => 'id']);
}
public function getItems()
{
return $this->hasMany(Item::className(), ['id' => 'item_id'])
return $this->hasMany(Item::class, ['id' => 'item_id'])
->via('orderItems');
}
}
@ -1013,21 +1019,21 @@ class Customer extends ActiveRecord
public function getPurchasedItems()
{
// items de clients pour lesquels la colonne 'id' de `Item` correspond à 'item_id' dans OrderItem
return $this->hasMany(Item::className(), ['id' => 'item_id'])
return $this->hasMany(Item::class, ['id' => 'item_id'])
->via('orderItems');
}
public function getOrderItems()
{
// items de commandes clients pour lesquels, la colonne 'id' de `Order` correspond à 'order_id' dans OrderItem
return $this->hasMany(OrderItem::className(), ['order_id' => 'id'])
return $this->hasMany(OrderItem::class, ['order_id' => 'id'])
->via('orders');
}
public function getOrders()
{
// idem à ci-dessus
return $this->hasMany(Order::className(), ['customer_id' => 'id']);
return $this->hasMany(Order::class, ['customer_id' => 'id']);
}
}
```
@ -1280,7 +1286,7 @@ class Customer extends ActiveRecord
{
public function getOrders()
{
return $this->hasMany(Order::className(), ['customer_id' => 'id']);
return $this->hasMany(Order::class, ['customer_id' => 'id']);
}
}
@ -1288,7 +1294,7 @@ class Order extends ActiveRecord
{
public function getCustomer()
{
return $this->hasOne(Customer::className(), ['id' => 'customer_id']);
return $this->hasOne(Customer::class, ['id' => 'customer_id']);
}
}
```
@ -1322,7 +1328,7 @@ class Customer extends ActiveRecord
{
public function getOrders()
{
return $this->hasMany(Order::className(), ['customer_id' => 'id'])->inverseOf('customer');
return $this->hasMany(Order::class, ['customer_id' => 'id'])->inverseOf('customer');
}
}
```
@ -1433,7 +1439,7 @@ class Customer extends \yii\db\ActiveRecord
public function getComments()
{
// a customer has many comments
return $this->hasMany(Comment::className(), ['customer_id' => 'id']);
return $this->hasMany(Comment::class, ['customer_id' => 'id']);
}
}
@ -1448,7 +1454,7 @@ class Comment extends \yii\mongodb\ActiveRecord
public function getCustomer()
{
// un commentaire (comment) a un client (customer)
return $this->hasOne(Customer::className(), ['id' => 'customer_id']);
return $this->hasOne(Customer::class, ['id' => 'customer_id']);
}
}
@ -1532,7 +1538,7 @@ class Customer extends \yii\db\ActiveRecord
{
public function getActiveComments()
{
return $this->hasMany(Comment::className(), ['customer_id' => 'id'])->active();
return $this->hasMany(Comment::class, ['customer_id' => 'id'])->active();
}
}
@ -1543,7 +1549,7 @@ class Customer extends \yii\db\ActiveRecord
{
public function getComments()
{
return $this->hasMany(Comment::className(), ['customer_id' => 'id']);
return $this->hasMany(Comment::class, ['customer_id' => 'id']);
}
}
@ -1609,7 +1615,7 @@ class Customer extends \yii\db\ActiveRecord
public function getOrders()
{
return $this->hasMany(Order::className(), ['customer_id' => 'id']);
return $this->hasMany(Order::class, ['customer_id' => 'id']);
}
}
```
@ -1704,7 +1710,7 @@ class Customer extends \yii\db\ActiveRecord
public function getOrders()
{
return $this->hasMany(Order::className(), ['customer_id' => 'id']);
return $this->hasMany(Order::class, ['customer_id' => 'id']);
}
}
```
@ -1735,7 +1741,7 @@ class Customer extends \yii\db\ActiveRecord
*/
public function getOrders()
{
return $this->hasMany(Order::className(), ['customer_id' => 'id']);
return $this->hasMany(Order::class, ['customer_id' => 'id']);
}
/**

26
docs/guide-fr/db-dao.md

@ -1,26 +1,26 @@
Objets d'accès aux bases de données
===================================
Construits au-dessus des [objets de bases de données PHP (PDO – PHP Data Objects)](https://secure.php.net/manual/en/book.pdo.php), les objets d'accès aux bases de données de Yii (DAO – Database Access Objects) fournissent une API orientée objets pour accéder à des bases de données relationnelles. C'est la fondation pour d'autres méthodes d'accès aux bases de données plus avancées qui incluent le [constructeur de requêtes (*query builder*)](db-query-builder.md) et l'[enregistrement actif (*active record*)](db-active-record.md).
Construits au-dessus des [objets de bases de données PHP (PDO – PHP Data Objects)](https://www.php.net/manual/en/book.pdo.php), les objets d'accès aux bases de données de Yii (DAO – Database Access Objects) fournissent une API orientée objets pour accéder à des bases de données relationnelles. C'est la fondation pour d'autres méthodes d'accès aux bases de données plus avancées qui incluent le [constructeur de requêtes (*query builder*)](db-query-builder.md) et l'[enregistrement actif (*active record*)](db-active-record.md).
Lorsque vous utilisez les objets d'accès aux bases de données de Yii, vous manipulez des requêtes SQL et des tableaux PHP. En conséquence, cela reste le moyen le plus efficace pour accéder aux bases de données. Néanmoins, étant donné que la syntaxe du langage SQL varie selon le type de base de données, l'utilisation des objets d'accès aux bases de données de Yii signifie également que vous avez à faire un travail supplémentaire pour créer une application indifférente au type de base de données.
Dans Yii 2.0, les objets d'accès aux bases de données prennent en charge les bases de données suivantes sans configuration supplémentaire :
- [MySQL](http://www.mysql.com/)
- [MySQL](https://www.mysql.com/)
- [MariaDB](https://mariadb.com/)
- [SQLite](http://sqlite.org/)
- [PostgreSQL](http://www.postgresql.org/): version 8.4 ou plus récente.
- [CUBRID](http://www.cubrid.org/): version 9.3 ou plus récente.
- [Oracle](http://www.oracle.com/us/products/database/overview/index.html)
- [SQLite](https://sqlite.org/)
- [PostgreSQL](https://www.postgresql.org/): version 8.4 ou plus récente.
- [CUBRID](https://www.cubrid.org/): version 9.3 ou plus récente.
- [Oracle](https://www.oracle.com/database/)
- [MSSQL](https://www.microsoft.com/en-us/sqlserver/default.aspx): version 2008 ou plus récente.
> Info: depuis Yii 2.1, la prise en charge des objets d'accès aux bases de données pour CUBRID, Oracle et MSSQL n'est plus fournie en tant que composants du noyau. Cette prise en charge nécessite l'installation d'[extensions](structure-extensions.md) séparées.
Parmi les [extensions officielles](https://www.yiiframework.com/extensions/official), on trouve [yiisoft/yii2-oracle](https://www.yiiframework.com/extension/yiisoft/yii2-oracle) et
[yiisoft/yii2-mssql](https://www.yiiframework.com/extension/yiisoft/yii2-mssql).
[yiisoft/yii2-mssql](https://www.yiiframework.com/extension/yiisoft/yii2-mssql).
> Note: la nouvelle version de pdo_oci pour PHP 7 n'existe pour le moment que sous forme de code source. Suivez les [instructions de la communauté](https://github.com/yiisoft/yii2/issues/10975#issuecomment-248479268)
pour la compiler ou utilisez [la couche d'émulation de PDO](https://github.com/taq/pdooci).
pour la compiler ou utilisez [la couche d'émulation de PDO](https://github.com/taq/pdooci).
## Création de connexions à une base de données <span id="creating-db-connections"></span>
@ -59,7 +59,7 @@ Vous pouvez ensuite accéder à la base de données via l'expression `Yii::$app-
> Tip: vous pouvez configurer plusieurs composants d'application « base de données » si votre application a besoin d'accéder à plusieurs bases de données.
Lorsque vous configurez une connexion à une base de données, vous devez toujours spécifier le nom de sa source de données (DSN – Data Source Name) via la propriété [[yii\db\Connection::dsn|dsn]]. Les formats des noms de source de données varient selon le type de base de données. Reportez-vous au [manuel de PHP](https://secure.php.net/manual/en/function.PDO-construct.php) pour plus de détails. Ci-dessous, nous donnons quelques exemples :
Lorsque vous configurez une connexion à une base de données, vous devez toujours spécifier le nom de sa source de données (DSN – Data Source Name) via la propriété [[yii\db\Connection::dsn|dsn]]. Les formats des noms de source de données varient selon le type de base de données. Reportez-vous au [manuel de PHP](https://www.php.net/manual/en/pdo.construct.php) pour plus de détails. Ci-dessous, nous donnons quelques exemples :
* MySQL, MariaDB: `mysql:host=localhost;dbname=mydatabase`
* SQLite: `sqlite:/path/to/database/file`
@ -164,7 +164,7 @@ $post = Yii::$app->db->createCommand('SELECT * FROM post WHERE id=:id AND status
->queryOne();
```
La liaison des paramètres est implémentée via des [instructions préparées](https://secure.php.net/manual/en/mysqli.quickstart.prepared-statements.php). En plus d'empêcher les attaques par injection SQL, cela peut aussi améliorer la performance en préparant l'instruction SQL une seule fois et l'exécutant de multiples fois avec des paramètres différents. Par exemple :
La liaison des paramètres est implémentée via des [instructions préparées](https://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php). En plus d'empêcher les attaques par injection SQL, cela peut aussi améliorer la performance en préparant l'instruction SQL une seule fois et l'exécutant de multiples fois avec des paramètres différents. Par exemple :
```php
$command = Yii::$app->db->createCommand('SELECT * FROM post WHERE id=:id');
@ -330,7 +330,7 @@ try {
En appelant la méthode [[yii\db\Connection::beginTransaction()|beginTransaction()]], une nouvelle transaction est démarrée. La transaction est représentée sous forme d'objet [[yii\db\Transaction]] stocké dans la variable `$transaction`. Ensuite, les requêtes à exécuter sont placées dans un bloc `try...catch...`. Si toutes les requêtes réussissent, la méthode [[yii\db\Transaction::commit()|commit()]] est appelée pour entériner la transaction. Autrement, si une exception a été levée et capturée, la méthode [[yii\db\Transaction::rollBack()|rollBack()]] est appelée pour défaire les changements faits par les requêtes de la transaction antérieures à celle qui a échoué. `throw $e` est alors à nouveau exécutée comme si l'exception n'avait jamais été capturée, ce qui permet au processus normal de gestion des erreurs de s'en occuper.
> Note: dans le code précédent nous avons deux blocs « catch » pour compatibilité
> avec PHP 5.x et PHP 7.x. `\Exception` met en œuvre l'[interface `\Throwable`](https://secure.php.net/manual/en/class.throwable.php)
> avec PHP 5.x et PHP 7.x. `\Exception` met en œuvre l'[interface `\Throwable`](https://www.php.net/manual/en/class.throwable.php)
> depuis PHP 7.0, ainsi vous pouvez sauter la partie avec `\Exception` si votre application utilise seulement PHP 7.0 et plus récent.
### Spécification de niveaux d'isolation <span id="specifying-isolation-levels"></span>
@ -366,7 +366,7 @@ Notez que quelques systèmes de gestion de base de données autorisent la défin
> Note: PostgreSQL n'autorise pas la définition du niveau d'isolation tant que la transaction n'a pas démarré, aussi ne pouvez-vous pas spécifier le niveau d'isolation directement en démarrant la transaction. Dans ce cas, vous devez appeler [[yii\db\Transaction::setIsolationLevel()]] après que la transaction a démarré.
[isolation levels]: http://en.wikipedia.org/wiki/Isolation_%28database_systems%29#Isolation_levels
[isolation levels]: https://en.wikipedia.org/wiki/Isolation_%28database_systems%29#Isolation_levels
### Imbrication des transactions <span id="nesting-transactions"></span>
@ -415,7 +415,7 @@ try {
## Réplication et éclatement lecture-écriture <span id="read-write-splitting"></span>
Beaucoup de systèmes de gestion de bases de données prennent en charge la [réplication de la base de données](http://en.wikipedia.org/wiki/Replication_(computing)#Database_replication) pour obtenir une meilleure disponibilité et des temps de réponse de serveur plus courts. Avec la réplication de la base de données, les données sont répliquées depuis les serveurs dits *serveurs maîtres* vers les serveurs dit *serveurs esclaves*. Toutes les écritures et les mises à jour ont lieu sur les serveurs maîtres, tandis que les lectures ont lieu sur les serveurs esclaves.
Beaucoup de systèmes de gestion de bases de données prennent en charge la [réplication de la base de données](https://en.wikipedia.org/wiki/Replication_(computing)#Database_replication) pour obtenir une meilleure disponibilité et des temps de réponse de serveur plus courts. Avec la réplication de la base de données, les données sont répliquées depuis les serveurs dits *serveurs maîtres* vers les serveurs dit *serveurs esclaves*. Toutes les écritures et les mises à jour ont lieu sur les serveurs maîtres, tandis que les lectures ont lieu sur les serveurs esclaves.
Pour tirer parti de la réplication des bases de données et réaliser l'éclatement lecture-écriture, vous pouvez configurer un composant [[yii\db\Connection]] comme le suivant :

2
docs/guide-fr/db-migrations.md

@ -616,7 +616,7 @@ class m150101_185401_create_news_table extends Migration
Notez que, généralement, si vous effectuez de multiples opérations de base de données dans `safeUp()`, vous devriez les défaire dans `safeDown()`. Dans l'exemple ci-dessus, dans `safeUp()`, nous créons d'abord la table puis nous insérons une ligne, tandis que, dans `safeDown`, nous commençons par supprimer la ligne, puis nous supprimons la table.
> Note: tous les systèmes de gestion de bases de données NE prennent PAS en charge les transactions. De plus, quelques requêtes de base de données ne peuvent être placées dans une transaction. Pour quelques exemples, reportez-vous à [entérinement implicite](http://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html). Si c'est le cas, vous devez simplement mettre en œuvre `up()` et`down()`, à la place.
> Note: tous les systèmes de gestion de bases de données NE prennent PAS en charge les transactions. De plus, quelques requêtes de base de données ne peuvent être placées dans une transaction. Pour quelques exemples, reportez-vous à [entérinement implicite](https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html). Si c'est le cas, vous devez simplement mettre en œuvre `up()` et`down()`, à la place.
### Méthodes d'accès aux bases de données <span id="db-accessing-methods"></span>

6
docs/guide-fr/db-query-builder.md

@ -155,7 +155,7 @@ $query->from(['u' => $subQuery]);
#### Préfixes
Un [[yii\db\Connection::$tablePrefix|préfixe de table]] peut aussi être appliqué. Les instructions de mise en œuvre sont données à la section
["Entourage des noms de table et de colonne par des marques de citation" du guide sur les objets d'accès aux bases de données" ](guide-db-dao.html#quoting-table-and-column-names).
["Entourage des noms de table et de colonne par des marques de citation" du guide sur les objets d'accès aux bases de données" ](db-dao.md#quoting-table-and-column-names).
### [[yii\db\Query::where()|where()]] <span id="where"></span>
La méthode [[yii\db\Query::where()|where()]] spécifie le fragment `WHERE`d'une requête SQL. Vous pouvez utiliser un des quatre formats suivants pour spécifier une condition `WHERE` :
@ -296,7 +296,7 @@ L'opérande 2 peut être soit un tableau, soit un objet `Query`.
Vous pouvez utiliser `false` ou un tableau vide pour indiquer que les valeurs sont déjà échappées et qu'aucun échappement ne doit être appliqué.
Notez que lorsqu'un tableau de mise en correspondance pour l'échappement est utilisé (ou quand le troisième opérande n'est pas fourni), les valeurs sont automatiquement entourées par une paire de caractères `%`.
> Note: lors de l'utilisation de PostgreSQL vous pouvez aussi utiliser [`ilike`](http://www.postgresql.org/docs/8.3/static/functions-matching.html#FUNCTIONS-LIKE)
> Note: lors de l'utilisation de PostgreSQL vous pouvez aussi utiliser [`ilike`](https://www.postgresql.org/docs/8.3/static/functions-matching.html#FUNCTIONS-LIKE)
>à la place de `like` pour une mise en correspondance insensible à la casse.
- `or like`: similaire à l'opérateur `like` sauf que `OR`est utilisé pour concaténer les prédicats `LIKE`
@ -771,7 +771,7 @@ foreach ($query->each() as $username => $user) {
#### Limitations des requêtes par lots dans MySQL <span id="batch-query-mysql"></span>
La mise en œuvre des requêtes par lots de MySQL s'appuie sur la bibliothèque du pilote PDO. Par défaut, les requêtes MySQL sont
[`mises en tampon`](https://secure.php.net/manual/en/mysqlinfo.concepts.buffering.php).
[`mises en tampon`](https://www.php.net/manual/en/mysqlinfo.concepts.buffering.php).
Cela empêche d'utiliser le curseur pour obtenir les données, parce que cela n'empêche pas le jeu résultant complet d'être chargé dans la mémoire du client par le pilote.

10
docs/guide-fr/helper-array.md

@ -1,7 +1,7 @@
Classe assistante ArrayHelper
=============================
En plus du jeu riche de [fonctions de tableaux](https://secure.php.net/manual/en/book.array.php) qu'offre PHP, la classe assistante traitant les tableaux dans Yii fournit des méthodes statiques supplémentaires qui vous permettent de traiter les tableaux avec plus d'efficacité.
En plus du jeu riche de [fonctions de tableaux](https://www.php.net/manual/en/book.array.php) qu'offre PHP, la classe assistante traitant les tableaux dans Yii fournit des méthodes statiques supplémentaires qui vous permettent de traiter les tableaux avec plus d'efficacité.
## Obtention de valeurs <span id="getting-values"></span>
@ -61,7 +61,7 @@ Après exécution du code, `$array` contiendra `['options' => [1, 2]]` et `$type
## Tester l'existence des clés <span id="checking-existence-of-keys"></span>
`ArrayHelper::keyExists` fonctionne comme [array_key_exists](https://secure.php.net/manual/en/function.array-key-exists.php) sauf qu'elle prend également en charge la comparaison de clés insensible à la casse. Par exemple,
`ArrayHelper::keyExists` fonctionne comme [array_key_exists](https://www.php.net/manual/en/function.array-key-exists.php) sauf qu'elle prend également en charge la comparaison de clés insensible à la casse. Par exemple,
```php
$data1 = [
@ -252,7 +252,7 @@ ArrayHelper::multisort($data, function($item) {
Le troisième argument précise la direction. Dans le cas d'un tri selon une clé unique, il s'agit soit de `SORT_ASC`, soit de `SORT_DESC`. Si le tri se fait selon des valeurs multiples, vous pouvez préciser des directions de tri différentes pour chacune des clés en présentant ces directions sous forme de tableau.
Le dernier argument est une option de tri de PHP qui peut prendre les mêmes valeurs que celles acceptées par la fonction [sort()](https://secure.php.net/manual/en/function.sort.php) de PHP.
Le dernier argument est une option de tri de PHP qui peut prendre les mêmes valeurs que celles acceptées par la fonction [sort()](https://www.php.net/manual/en/function.sort.php) de PHP.
## Détection des types de tableau <span id="detecting-array-types"></span>
@ -284,7 +284,7 @@ Seules les valeurs sont encodées par défaut. En passant un deuxième argument
## Fusion de tableaux <span id="merging-arrays"></span>
La fonction [[yii\helpers\ArrayHelper::merge()|ArrayHelper::merge()]] vous permet de fusionner deux, ou plus, tableaux en un seul de manière récursive. Si chacun des tableaux possède un élément avec la même chaîne clé valeur, le dernier écrase le premier (ce qui est un fonctionnement différent de [array_merge_recursive()](https://secure.php.net/manual/en/function.array-merge-recursive.php)).
La fonction [[yii\helpers\ArrayHelper::merge()|ArrayHelper::merge()]] vous permet de fusionner deux, ou plus, tableaux en un seul de manière récursive. Si chacun des tableaux possède un élément avec la même chaîne clé valeur, le dernier écrase le premier (ce qui est un fonctionnement différent de [array_merge_recursive()](https://www.php.net/manual/en/function.array-merge-recursive.php)).
La fusion récursive est entreprise si les deux tableaux possèdent un élément de type tableau avec la même clé. Pour des éléments dont la clé est un entier, les éléments du deuxième tableau sont ajoutés aux éléments du premier tableau. Vous pouvez utiliser l'objet [[yii\helpers\UnsetArrayValue]] pour supprimer la valeur du premier tableau ou [[yii\helpers\ReplaceArrayValue]] pour forcer le remplacement de la première valeur au lieu de la fusion récursive.
Par exemple :
@ -391,7 +391,7 @@ Il est possible de fournir une manière par défaut de convertir un objet en tab
Souvent, vous devez savoir si un élément se trouve dans un tableau ou si un jeu d'éléments est un sous-ensemble d'un autre. Bien que PHP offre la fonction `in_array()`, cette dernière ne prend pas en charge les sous-ensembles ou les objets `\Traversable`.
Pour faciliter ce genre de tests, [[yii\helpers\ArrayHelper]] fournit les méthodes [[yii\helpers\ArrayHelper::isIn()|isIn()]]
et [[yii\helpers\ArrayHelper::isSubset()|isSubset()]] avec la même signature que [in_array()](https://secure.php.net/manual/en/function.in-array.php).
et [[yii\helpers\ArrayHelper::isSubset()|isSubset()]] avec la même signature que [in_array()](https://www.php.net/manual/en/function.in-array.php).
```php
// true

8
docs/guide-fr/helper-html.md

@ -1,7 +1,7 @@
Classe assistante Html
======================
Toutes les applications Web génèrent un grand nombre de balises HTML. Si le code HTML est statique, il peut être créé efficacement sous forme de [mélange de code PHP et de code HTML dans un seul fichier](https://secure.php.net/manual/en/language.basic-syntax.phpmode.php), mais lorsqu'il est généré dynamiquement, cela commence à être compliqué à gérer sans une aide supplémentaire. Yii fournit une telle aide sous la forme de la classe assistante Html, qui offre un jeu de méthodes statiques pour manipuler les balises Html les plus courantes, leurs options et leur contenu.
Toutes les applications Web génèrent un grand nombre de balises HTML. Si le code HTML est statique, il peut être créé efficacement sous forme de [mélange de code PHP et de code HTML dans un seul fichier](https://www.php.net/manual/en/language.basic-syntax.phpmode.php), mais lorsqu'il est généré dynamiquement, cela commence à être compliqué à gérer sans une aide supplémentaire. Yii fournit une telle aide sous la forme de la classe assistante Html, qui offre un jeu de méthodes statiques pour manipuler les balises Html les plus courantes, leurs options et leur contenu.
> Note: si votre code HTML est presque statique, il vaut mieux utiliser HTML directement. Il n'est pas nécessaire d'envelopper tout dans des appels aux méthodes de la classe assistante Html.
@ -36,7 +36,7 @@ Des options sont utilisées dans de nombreuses méthodes de la classe assistante
- Si une valeur est `null`, l'attribut correspondant n'est pas rendu.
- Les attributs du type booléen sont traités comme des
[attributs booléens ](http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes).
[attributs booléens ](https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#boolean-attributes).
- Les valeurs des attributs sont encodés HTML à l'aide de la méthode [[yii\helpers\Html::encode()|Html::encode()]].
- Si la valeur d'un attribut est un tableau, il est géré comme suit :
@ -134,8 +134,8 @@ accepte un tableau de propriétés à retirer. S'il s'agit d'une propriété uni
### Encodage et décodage du contenu <span id="encoding-and-decoding-content"></span>
Pour que le contenu puisse être affiché en HTML de manière propre et en toute sécurité, les caractères spéciaux du contenu doivent être encodés. En PHP, cela s'obtient avec [htmlspecialchars](https://secure.php.net/manual/en/function.htmlspecialchars.php) et
[htmlspecialchars_decode](https://secure.php.net/manual/en/function.htmlspecialchars-decode.php). Le problème rencontré en utilisant ces méthodes directement est que vous devez spécifier l'encodage et des options supplémentaires tout le temps. Comme ces options restent toujours les mêmes et que l'encodage doit correspondre à celui de l'application pour éviter les problèmes de sécurité, Yii fournit deux méthodes compactes et faciles à utiliser :
Pour que le contenu puisse être affiché en HTML de manière propre et en toute sécurité, les caractères spéciaux du contenu doivent être encodés. En PHP, cela s'obtient avec [htmlspecialchars](https://www.php.net/manual/en/function.htmlspecialchars.php) et
[htmlspecialchars_decode](https://www.php.net/manual/en/function.htmlspecialchars-decode.php). Le problème rencontré en utilisant ces méthodes directement est que vous devez spécifier l'encodage et des options supplémentaires tout le temps. Comme ces options restent toujours les mêmes et que l'encodage doit correspondre à celui de l'application pour éviter les problèmes de sécurité, Yii fournit deux méthodes compactes et faciles à utiliser :
```php
$userName = Html::encode($user->name);

2
docs/guide-fr/input-file-upload.md

@ -107,7 +107,7 @@ Dans le code ci-dessus, lorsque le formulaire est soumis, la méthode [[yii\web\
Vous pouvez également charger sur le serveur plusieurs fichiers à la fois, avec quelques ajustements au code présenté dans les sous-sections précédentes.
Tout d'abord, vous devez ajuster la classe du modèle en ajoutant l'option `maxFiles` dans la règle de validation de `file` pour limiter le nombre maximum de fichiers à charger simultanément. Définir `maxFiles` à `0` signifie que ce nombre n'est pas limité. Le nombre maximal de fichiers que l'on peut charger simultanément est aussi limité par la directive PHP [`max_file_uploads`](https://secure.php.net/manual/en/ini.core.php#ini.max-file-uploads), dont la valeur par défaut est 20. La méthode `upload()` doit aussi être modifiée pour permettre la sauvegarde des fichiers un à un.
Tout d'abord, vous devez ajuster la classe du modèle en ajoutant l'option `maxFiles` dans la règle de validation de `file` pour limiter le nombre maximum de fichiers à charger simultanément. Définir `maxFiles` à `0` signifie que ce nombre n'est pas limité. Le nombre maximal de fichiers que l'on peut charger simultanément est aussi limité par la directive PHP [`max_file_uploads`](https://www.php.net/manual/en/ini.core.php#ini.max-file-uploads), dont la valeur par défaut est 20. La méthode `upload()` doit aussi être modifiée pour permettre la sauvegarde des fichiers un à un.
```php
namespace app\models;

4
docs/guide-fr/input-forms.md

@ -73,7 +73,7 @@ echo $form->field($model, 'items[]')->checkboxList(['a' => 'Item A', 'b' => 'Ite
Soyez prudent lorsque vous nommez des éléments de formulaire tels que des boutons de soumission. Selon la [documentation de jQuery](https://api.jquery.com/submit/), certains noms sont réservés car ils peuvent créer des conflits :
> Les éléments *forms* et leurs éléments enfants ne devraient par utiliser des noms de champ de saisie, ou des identifiants que entrent en conflit avec les propriétés d'un élément de *form*, tels que `submit`, `length`, ou `method`. Les conflits de noms peuvent créer des échecs troublants. Pour une liste complètes des règles et pour vérifier votre code HTML à propos de ces problèmes, reportez-vous à [DOMLint](http://kangax.github.io/domlint/).
> Les éléments *forms* et leurs éléments enfants ne devraient par utiliser des noms de champ de saisie, ou des identifiants que entrent en conflit avec les propriétés d'un élément de *form*, tels que `submit`, `length`, ou `method`. Les conflits de noms peuvent créer des échecs troublants. Pour une liste complètes des règles et pour vérifier votre code HTML à propos de ces problèmes, reportez-vous à [DOMLint](https://kangax.github.io/domlint/).
Des balises additionnelles HTML peuvent être ajoutées au formulaire en utilisant du HTML simple ou en utilisant les méthodes de la classe [[yii\helpers\Html|Html]]-helper comme cela est fait dans l'exemple ci-dessus avec le [[yii\helpers\Html::submitButton()|bouton de soumission]].
@ -93,7 +93,7 @@ Des balises additionnelles HTML peuvent être ajoutées au formulaire en utilisa
Création d'une liste déroulante <span id="creating-activeform-dropdownlist"></span>
-------------------------------
Vous pouvez utiliser la méthode [dropDownList()](http://www.yiiframework.com/doc-2.0/yii-widgets-activefield.html#dropDownList()-detail) de ActiveForm pour créer une liste déroulante :
Vous pouvez utiliser la méthode [dropDownList()](https://www.yiiframework.com/doc-2.0/yii-widgets-activefield.html#dropDownList()-detail) de ActiveForm pour créer une liste déroulante :
```php

4
docs/guide-fr/input-validation.md

@ -370,7 +370,7 @@ class EntryForm extends Model
{
return [
[['name', 'email'], 'required'],
['country', CountryValidator::className()],
['country', CountryValidator::class],
['email', 'email'],
];
}
@ -494,7 +494,7 @@ JS;
### Validation différée <span id="deferred-validation"></span>
Si vous devez effectuer une validation asynchrone côté client, vous pouvez créer des [objets différés](http://api.jquery.com/category/deferred-object/). Par exemple, pour effectuer une validation AJAX personnalisée, vous pouvez utiliser le code suivant :
Si vous devez effectuer une validation asynchrone côté client, vous pouvez créer des [objets différés](https://api.jquery.com/category/deferred-object/). Par exemple, pour effectuer une validation AJAX personnalisée, vous pouvez utiliser le code suivant :
```php
public function clientValidateAttribute($model, $attribute, $view)

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save