-
Notifications
You must be signed in to change notification settings - Fork 10.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[9.x] Add ability to generate unique validation rules per nested array element #40464
Conversation
Nice work, this is going to make validation in my project much simpler. |
* @return array | ||
*/ | ||
protected function explodeExplicitRule($rule) | ||
protected function explodeExplicitRule($rule, $attribute) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changing the method signatures here could be a breaking change.
* @return mixed | ||
*/ | ||
protected function prepareRule($rule) | ||
protected function prepareRule($rule, $attribute) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This could also be a breaking change.
This might be a nice addition. A bit offtopic, but the same issue exists with the validator messages. You still need to loop through your array, and set the correct error message. Would be nice if both can be supported. This is my current approach now. Without this, the validator will output something like $rules = [];
$messages = [];
foreach ($request->input('companies', []) as $index => $company) {
$rules = array_merge($rules, [
"companies.{$index}.name" => ['required'],
]);
$messages = array_merge($messages, [
"companies.{$index}.name.required" => 'Company ' . ($index + 1) . ': The name field is required.',
]);
}
$validator = Validator::make($request->all(), $rules, $messages); |
@stevebauman thank you for the great PR. But what about attributes for this rule? How we should declare attributes for the nested arrays? |
Could anybody explain how I can use it with I need check that the each item does not have duplicated discounts. For the example below
|
{ | ||
if ($rule instanceof Closure) { | ||
$rule = new ClosureValidationRule($rule); | ||
} elseif ($rule instanceof NestedRules) { | ||
$rule = $rule->compile($attribute, $this->data[$attribute] ?? null); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
$this->data
is poor array
$this->data[$attribute]
is it valid if the attribute will have complex key like data.test
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any data that is set with the attribute's key will be supplied into the Rule::nested()
callback.
So if it's an array, it will be an array. This line you mention allows you to place a nested instance on any validation field:
$rules = [
'name' => Rule::nested(function ($attribute, $value) {
// (string) "name"
var_dump($attribute);
// (string) "Taylor Otwell"
var_dump($value);
}),
'data.test' => Rule::nested(function ($attribute, $value) {
// (string) "data.test"
var_dump($attribute);
// (string) "Foo"
var_dump($value);
}),
];
Validator::validate([
'name' => 'Taylor Otwell',
'data' => ['test' => 'Foo'],
], $rules);
The third argument inside of the Rule::nested()
callback is only available when the attribute under validation is a wildcard array.
Co-authored-by: Dries Vints <dries@vints.io>
i liked this idea nice work steve 💪 |
@stevebauman will it covered and how? |
Yea that's true. I'm not sure we can get around this unless we implement some sort of unified system where rules, messages, and attributes can handle a closure/nested instance... Currently for your posted example $rules = [
'items.*' => Rule::nested(function ($attribute) {
$index = Str::afterLast($attribute, '.');
return ["{$index}.discounts.*.id" => 'distinct'];
}),
];
// After rule parsing:
// [
// 'items.0.discounts.*.id' => ['distinct'],
// 'items.1.discounts.*.id' => ['distinct'],
// ] The above is not supported in this PR, but I think supporting this use-case would grant us even finer control over array validation rules. |
|
No, not currently. I'm saying that it may be possible to be able to. I've converted this PR to a draft while I attempt to make this possible. As @driesvints points out -- this may need to be sent to the 9.x branch due to breaking changes in method signatures. |
Love this, had to do it manually on a client project recently and it was not pretty 😅 |
Could you please add an example where I have additional columns in discounts array, for example (type: percent, absolute; and discount: numeric value), not one rule for id |
Sure thing @siarheipashkevich! I've added another test so you can see this in action: a38ddf7 Here's the example: $data = [
'items' => [
[
'discounts' => [
['id' => 1, 'percent' => 30, 'discount' => 1400],
['id' => 1, 'percent' => -1, 'discount' => 12300],
['id' => 2, 'percent' => 120, 'discount' => 1200],
]
],
[
'discounts' => [
['id' => 1, 'percent' => 30, 'discount' => 'invalid'],
['id' => 2, 'percent' => 'invalid', 'discount' => 1250],
['id' => 3, 'percent' => 'invalid', 'discount' => 'invalid'],
],
],
],
];
$rules = [
'items.*' => Rule::nested(function () {
return [
'discounts.*.id' => 'distinct',
'discounts.*' => Rule::nested(function () {
return [
'percent' => 'numeric|min:0|max:100',
'discount' => 'numeric',
];
}),
];
}),
]; |
Thanks a lot @stevebauman ! One more question, how you validate discount value by discount type in our nested example above? If the discount type equals percent then the discount value should be between 0 and 100. If the discount type is equals absolute then the discount value should be any valid numeric value. I will be grateful for your example. |
No worries @siarheipashkevich! Thanks for the great examples to display 👍 I just tested this, here's how you could write it using $data = [
'items' => [
[
'discounts' => [
['id' => 1, 'type' => 'percent', 'discount' => 120],
['id' => 1, 'type' => 'absolute', 'discount' => 100],
['id' => 2, 'type' => 'percent', 'discount' => 50],
],
],
[
'discounts' => [
['id' => 2, 'type' => 'percent', 'discount' => 'invalid'],
['id' => 3, 'type' => 'absolute', 'discount' => 2000]
],
],
],
];
$rules = [
'items.*' => Rule::nested(function () {
return [
'discounts.*.id' => 'distinct',
'discounts.*.type' => 'in:percent,absolute',
'discounts.*' => Rule::nested(function ($attribute, $value) {
return $value['type'] === 'percent'
? ['discount' => 'numeric|min:0|max:100']
: ['discount' => 'numeric'];
}),
];
}),
]; |
@stevebauman can you target this at the |
Yup absolutely! Give me 10 minutes 👍 |
Ok @taylorotwell -- all good to go! |
@ionutantohi personally I would just handle this by putting something in your |
@stevebauman one thing that came to mind here was this fairly recent contribution: https://laravel.com/docs/8.x/validation#complex-conditional-array-validation As you can see, it receives the entire array item for the current index. Is that useful at all in this scenario as well? |
@taylorotwell It's certainly useful, but from what I understand I'm not able to segment rules so that distinct looks only in the parent array and not in the whole data array. For example: $data = [
'companies' => [
['locations' => [['id' => 1], ['id' => 2]]],
['locations' => [['id' => 1], ['id' => 2]]],
],
];
// Does not work -- sees duplicates across arrays:
$rules = [
'companies.*.locations.*.id' => ['distinct', 'exists:locations,id'],
];
// Works:
$rules = [
'companies.*' => Rule::nested(function () {
return ['locations.*.id' => ['distinct', 'exists:locations,id']];
}),
]; |
My use case in detail: I have a user creation form where a user can belong to multiple companies. Inside each company, they have to be associated to at least one location owned by that company. I could perform this pretty complex validation like so: $data = [
'companies' => [
['id' => 1, 'locations' => [['id' => 1], ['id' => 2]]],
['id' => 2, 'locations' => [['id' => 1], ['id' => 2]]],
],
];
$rules = [
'companies' => ['required', 'array'],
'companies.*.id' => ['required', 'distinct', Rule::exists(Company::class, 'id')],
'companies.*' => Rule::nested(function ($attribute, $company) {
return [
'locations' => 'required',
'locations.*' => ['required', 'array'],
'locations.*.id' => [
'required',
'distinct',
Rule::exists(Location::class, 'id')->where('company_id', $company['id']),
]
];
}),
]; Maybe we could utilize |
@taylorotwell Thanks for your suggestion, but unfortunately i can't do this on my end, because that error message will be duplicated (and the same) for all items in the array $input = [
'companies' => [
[
'name' => 'Foo'
],
[
'name' => null
],
[
'name' => null
]
]
]; Using your suggestion the validator will produce the below, without any indication to which item it refers to
There was a pr #35754 which introduced a new placeholder which might help in this case. That's it, I don't want to pollute this pr anymore |
commit 2ca2af35595ab5630614ba8310608be61375bd81 Author: Joseph Silber <contact@josephsilber.com> Date: Wed Jan 19 10:08:09 2022 -0500 [9.x] Lazy collection constructor throws when passed a generator (#40493) * Lazy collection constructor throws when passed a generator * Update LazyCollection.php * Update LazyCollection.php Co-authored-by: Taylor Otwell <taylor@laravel.com> commit e2da8084eef48bd35cfc3864a040358aef43019d Author: Tetiana Blindaruk <t.blindaruk@gmail.com> Date: Tue Jan 18 20:54:43 2022 +0200 [9.x] update changelog commit ac6fc32c2933d5868a2c0d2aea4af9405d710378 Author: Taylor Otwell <taylor@laravel.com> Date: Tue Jan 18 12:23:20 2022 -0600 fix bad merge commit 5371296aef2073ae5a5aafc94a5b8f19ab80d36b Merge: cf3f386ac 96f0237ef Author: Taylor Otwell <taylor@laravel.com> Date: Tue Jan 18 12:18:45 2022 -0600 versino commit cf3f386ac3bc27dee01e4644b4ceaca0e38cff51 Author: Taylor Otwell <taylor@laravel.com> Date: Tue Jan 18 10:45:03 2022 -0600 formatting commit 6ed9dc68f37c48decf29b2e0fa44a6d68f107950 Merge: be8e71501 e6017b7c5 Author: Taylor Otwell <taylor@laravel.com> Date: Tue Jan 18 10:43:06 2022 -0600 Merge branch '9.x' of https://github.com/thibodelanghe/framework into thibodelanghe-9.x commit be8e71501088131b3d048eec2c9946da8f169dc8 Merge: 367f92582 bd950e3cd Author: Taylor Otwell <taylor@laravel.com> Date: Tue Jan 18 10:42:40 2022 -0600 Merge branch '9.x' of github.com:laravel/framework into 9.x commit 96f0237ef66128c4c31310946a9164a7bf037c1a Author: Amir Rami <amirrami.ce@gmail.com> Date: Tue Jan 18 17:40:48 2022 +0100 [8.x] Add `sscanf` to Stringable (#40472) * Add `sscanf` to Stringable * Replace unnecessary double quotes * Fix CS Co-authored-by: Amir <a.rami@adaptech.me> commit e6017b7c58274a899f4fbcfba36d2b8a25f0a335 Author: Thibo De Langhe <thibo.delanghe@onlyhumans.com> Date: Tue Jan 18 17:06:57 2022 +0100 Added closing dot to doc block commit a588ac00492c765911727ab3ad9f6d2b80077200 Author: Thibo De Langhe <thibo.delanghe@onlyhumans.com> Date: Tue Jan 18 16:57:25 2022 +0100 Added doc blocks and make use of the null safe operator instead of using a temp var commit 8949a2e46b0f274f39c61eee8d5de1dc6a1f686b Author: Taylor Otwell <taylor@laravel.com> Date: Tue Jan 18 09:51:42 2022 -0600 version commit bd950e3cdc167e04c603d97342b8a385fc8d978e Author: Can Vural <can9119@gmail.com> Date: Tue Jan 18 16:46:57 2022 +0100 Fixes remaining static<Tkey, TModel> usages in Eloquent collection (#40474) commit 367f925823d89d0693455361bf1d821cf87ffe05 Author: Thibo De Langhe <thibo.delanghe@onlyhumans.com> Date: Tue Jan 18 16:28:38 2022 +0100 Edited getConnection signature to allow backwards compatibility commit c268e2756defc9561207a2c4b4f7400f777751f8 Author: Thibo De Langhe <thibo.delanghe@onlyhumans.com> Date: Tue Jan 18 16:11:10 2022 +0100 Make use of new getConnection method signature commit aa5ebc108d2cc5e9727d8189b5cff9469edf2b22 Author: Thibo De Langhe <thibo.delanghe@onlyhumans.com> Date: Tue Jan 18 16:09:13 2022 +0100 Allow model defined connections to be used in testing instead of defaulting to the fallback connection commit 6d29d4e9fb353447952bea196991032c8acca84c Author: Antonio Pauletich <antonio.pauletich95@gmail.com> Date: Tue Jan 18 15:36:45 2022 +0100 Remove return type will change annotations (#40471) commit 8ec782978a4a99dc75b01a691f003c8d2614c38c Author: Saya <chu121su12@gmail.com> Date: Tue Jan 18 22:33:06 2022 +0800 [9.x] add `Http::connectTimeout` to set `connect_timeout` option (#40466) commit e711113a4363946df17bd1d88b1b1fb0fcdcf03b Author: Sander Muller <sander@mulver.nl> Date: Tue Jan 18 15:05:16 2022 +0100 Fix docblock of $contents argument of PendingRequest->attach() (#40473) commit 8a60e4f35a9344edc70b9a07aa2c205f3f166b70 Author: Nuno Maduro <enunomaduro@gmail.com> Date: Mon Jan 17 19:24:47 2022 +0000 [9.x] Improves default aliases API (#40453) * Improves default aliases API * Renames to `defaultAliases` * Renames to `defaultAliases` commit ff907d5f7bfc8d76811eb587158f837604750572 Author: StyleCI Bot <bot@styleci.io> Date: Mon Jan 17 19:20:24 2022 +0000 Apply fixes from StyleCI commit d08eaf6f4f51f2a663e5b131e1b5327b80829a83 Author: Jordan Welch <JordanHWelch@gmail.com> Date: Mon Jan 17 13:20:07 2022 -0600 [9.x] Add SeeInOrder Mailable assertions (#40460) * Test existing Mailable assertions * Add assertSeeInOrderHtml and assertSeeInOrderText * formatting Co-authored-by: Taylor Otwell <taylor@laravel.com> commit 3c72d43acfc8805fd51426515b0951ef5dec3af2 Author: Taylor Otwell <taylor@laravel.com> Date: Sun Jan 16 20:50:24 2022 -0600 use not null check commit 6aec92259797c2d9ee0e7348f960e039f8ccd326 Author: esthezia <esthezia@yahoo.com> Date: Mon Jan 17 01:22:06 2022 +0200 [Database] Allow the creation of char columns with length 0 The most effective way, storage-wise, to store boolean values in the database, in MySQL, is to use a `char(0)` column that will store NULL for false and "" (empty string) for true. So allow the creation of a char column with the length of zero. Note: This is only useful, and true, for MySQL. For PostgreSQL, for example, it's not. commit 9db1d842561eb53de1719449fc6742b43e707f30 Author: Daniel LaBarge <daniel@artisanmade.io> Date: Sat Jan 15 09:16:25 2022 -0600 Allow event listerns to be invokables when autodiscovered (#40419) Listen for `handle*()` or `__invoke()` methods on discovery of event listeners. commit 78a2d6362ad22dd1f355a608f9b3601a8377b494 Author: Can Vural <can9119@gmail.com> Date: Sat Jan 15 16:04:28 2022 +0100 Fixes containsStrict and modelKeys method typehints (#40416) commit e98ae6d1b989ba054b5b9a62154a83bbbca4511c Author: Nuno Maduro <enunomaduro@gmail.com> Date: Sat Jan 15 14:59:57 2022 +0000 Adds tests regarding `Request::hasSession` and `Request::getSession` (#40424) commit b24b689a267488beaf2e50681811af1a5d8fb93a Author: Taylor Otwell <taylor@laravel.com> Date: Fri Jan 14 14:57:53 2022 -0600 formatting commit 7d3998bbcda2940f4a6ae509f6f288bc66b5edd1 Merge: 3e8abad96 73d0ee647 Author: Taylor Otwell <taylor@laravel.com> Date: Fri Jan 14 14:57:04 2022 -0600 Merge branch '9.x' of https://github.com/kastsecho/framework into kastsecho-9.x commit 3e8abad96ea5473fde41ef9afd1ed3dbc3802752 Author: Taylor Otwell <taylor@laravel.com> Date: Fri Jan 14 14:52:29 2022 -0600 formatting commit 22e04b47f65e98de1f26aaa153d3dd29cec4fa8d Merge: 89e0e56c3 78041a152 Author: Taylor Otwell <taylor@laravel.com> Date: Fri Jan 14 14:47:32 2022 -0600 Merge branch '9.x' of https://github.com/koenhoeijmakers/framework into koenhoeijmakers-9.x commit 78041a1529e2b11146939d4a0e9b607b98a9a5b6 Author: Koen Hoeijmakers <koen@hoeijmakers.me> Date: Fri Jan 14 18:04:35 2022 +0100 remove function import commit 89e0e56c3520a0d1c35106ff10d22d06274591bd Author: Dries Vints <dries@vints.io> Date: Fri Jan 14 14:05:26 2022 +0100 [9.x] Flysystem v3 support (#40411) * constraints * Flysystem v3 support commit 05787a04e3259eb431b456cc8e163ea02384e3b1 Merge: 17831c285 4963e256b Author: Taylor Otwell <taylor@laravel.com> Date: Fri Jan 14 07:02:31 2022 -0600 Merge branch 'add-backoff-to-retry-helper' into 9.x commit 4963e256bf8c92832e567c2bb6b54c2c4c395bb7 Author: Taylor Otwell <taylor@laravel.com> Date: Fri Jan 14 07:02:24 2022 -0600 formatting commit 17831c2858fd099d7a1c416eb29fdb0c9ff443ca Author: Nuno Maduro <enunomaduro@gmail.com> Date: Fri Jan 14 12:38:45 2022 +0000 Fixes `Command::setHidden()` (#40415) commit 45ca5073aaa8ad7180bc248f920f265588c0cae5 Author: Markus Hebenstreit <office@hebinet.at> Date: Fri Jan 14 10:00:02 2022 +0100 Added backoff functionality to retry helper commit 73d0ee647dc10f7f8fd452e15c171239a1f59e59 Author: Jared Lewis <jslewis90@outlook.com> Date: Fri Jan 14 03:59:21 2022 -0500 Add Bootstrap 5 styled pagination commit d464ff5f594a4f8183520d30c807680384e84571 Author: StyleCI Bot <bot@styleci.io> Date: Fri Jan 14 07:47:44 2022 +0000 Apply fixes from StyleCI commit 4ec36ec17ecb3b54aab38fb232a8260a238ce0bc Author: Dries Vints <dries@vints.io> Date: Fri Jan 14 08:47:21 2022 +0100 Fix some docblocks commit a5a01581871ab0fdf35f009cb9da01fa0a2a6107 Author: StyleCI Bot <bot@styleci.io> Date: Thu Jan 13 21:06:12 2022 +0000 Apply fixes from StyleCI commit 35789fd0701376cbc1c2fdb6ef519cebc5512034 Author: Taylor Otwell <taylor@laravel.com> Date: Thu Jan 13 15:05:36 2022 -0600 revert broken pr commit 9debcfe80d86b9d3d9007cfefb6ed2acedc79fd8 Author: Can Vural <can9119@gmail.com> Date: Thu Jan 13 19:29:22 2022 +0100 [9.x] Uses `static` instead `static<TKey, TValue>` (#40393) * Uses static instead static<TKey, TValue> * Fixes variadic PHPDoc type * Uses static instead static<TKey, TValue> in EnumeratesValues trait * Fixes CS commit c9101668667c517bc1bdc5324283d4d4a3b159fa Author: Craig Morris <craig.michael.morris@gmail.com> Date: Thu Jan 13 18:28:20 2022 +0000 Fix namesapce in test (#40395) commit 029bb991df56657c59df08f878d7d012d1b2c79b Author: Koen Hoeijmakers <koen@hoeijmakers.me> Date: Thu Jan 13 18:59:05 2022 +0100 style-ci fix commit 7ad512011f6e7a24c689d56214f4a2948a5328fc Author: Koen Hoeijmakers <koen@hoeijmakers.me> Date: Thu Jan 13 18:56:46 2022 +0100 style-ci fix commit 1be2faf2f8a7894cb80feb4317e10663d5a85211 Author: Koen Hoeijmakers <koen@hoeijmakers.me> Date: Thu Jan 13 18:31:11 2022 +0100 test shouldGatherMiddleware commit c0a0086fdebcd4abc5fae5dac90c02d30d0952cd Author: Taylor Otwell <taylor@laravel.com> Date: Thu Jan 13 08:48:22 2022 -0600 [9.x] Add session decorator (#40378) * add decorator * Apply fixes from StyleCI * fix docs Co-authored-by: StyleCI Bot <bot@styleci.io> commit 82cae4161f9d4f3174789abc157efb9c28a3ed0a Merge: 0a4539cd2 8091f0755 Author: Dries Vints <dries@vints.io> Date: Thu Jan 13 09:50:19 2022 +0100 Merge branch '8.x' into 9.x # Conflicts: # src/Illuminate/Foundation/Application.php commit b7dfe7c01b8b2b55cddbf52f5d2c5cee046fdb6e Author: Koen Hoeijmakers <koen@hoeijmakers.me> Date: Thu Jan 13 09:49:36 2022 +0100 add shouldGatherMiddleware to ControllerDispatcher interface commit 0a4539cd2b7e16b2f796024724f31ed61639d96e Author: Dries Vints <dries@vints.io> Date: Thu Jan 13 09:47:59 2022 +0100 Update CHANGELOG.md commit afbadf6ad327854bd46002ecd5012f6ddc753b42 Author: Taylor Otwell <taylor@laravel.com> Date: Wed Jan 12 16:36:57 2022 -0600 use throwable commit e850bcd33d4cc48a419c0f6a516e2e8a1690135f Author: Taylor Otwell <taylor@laravel.com> Date: Wed Jan 12 14:32:45 2022 -0600 [9.x] Change default behavior of unvalidated array keys (#40368) * chnage default behavior * update test commit 1eb0ac85aaded5b80cfc7b480fb37b1c1c3d9663 Author: Taylor Otwell <taylor@laravel.com> Date: Wed Jan 12 13:45:29 2022 -0600 update split script commit 4c7e1c4608b44484b3e305535cb861151a1bf69c Author: Taylor Otwell <taylor@laravel.com> Date: Wed Jan 12 13:45:21 2022 -0600 update release script commit a46aafa539054265ce92d0f9b7832d279449151b Author: Nuno Maduro <enunomaduro@gmail.com> Date: Wed Jan 12 18:56:12 2022 +0000 Improves `Collection::mapInto` types (#40374) commit 7854c340200f6a04b052e32e20170215842a1fb8 Author: Nuno Maduro <enunomaduro@gmail.com> Date: Wed Jan 12 18:56:00 2022 +0000 Fixes Collection::groupBy types (#40373) commit 9adc7a8d779b0ff51251d509085277ce9e78e1d0 Author: Nuno Maduro <enunomaduro@gmail.com> Date: Wed Jan 12 18:55:51 2022 +0000 [9.x] Fixes `Collection::keyBy` related types (#40372) * Fixes Collection::keyBy types * Fixes Collection::keyBy types commit b88546cb137b80afe5b40b338f4d8a1a404c8dd5 Author: Lucas Michot <lucas@semalead.com> Date: Wed Jan 12 15:41:57 2022 +0100 [9.x] Avoid nested conditions (#40355) * No need to use multiple conditions * Fix StyleCI * formatting Co-authored-by: Taylor Otwell <taylor@laravel.com> commit 3d336c55285e4adea1490ad98075b5ee8c2b522a Author: Lucas Michot <lucas@semalead.com> Date: Wed Jan 12 15:00:53 2022 +0100 Replace strpos with str_contains and str_starts_with (#40353) commit b52ced2934f1c61af94dd02ea8032dd67c64ce86 Author: Lucas Michot <lucas@semalead.com> Date: Wed Jan 12 15:00:22 2022 +0100 Use ?-> instead of optional (#40354) commit be3e20c683cf231c1e1f39934c69e2e045d4e531 Author: Ash Allen <mail@ashallendesign.co.uk> Date: Wed Jan 12 03:15:31 2022 +0000 [9.x] Updated to use `str_starts_with` (#40349) * Updated to use str_starts_with(). * Style updates. commit 312a5577cc34c366a64ba855068205b1f82c1998 Author: Dries Vints <dries@vints.io> Date: Tue Jan 11 16:33:22 2022 +0100 Update psr/container-implementation constraints (#40340) commit 0b187784a1f0c79a0b793fc9925c42749913bc56 Author: Dries Vints <dries@vints.io> Date: Mon Jan 10 18:34:58 2022 +0100 [9.x] Fix master CI (#40329) * wip * wip * wip * wip * wip * fix builder * fix Co-authored-by: Taylor Otwell <taylor@laravel.com> commit f42aaa5c50f487e22895dec0bbcef30fbe203167 Author: Dries Vints <dries@vints.io> Date: Mon Jan 10 16:37:57 2022 +0100 wip commit 6c105348d007be7bfa847114af7bbb082ef08e42 Author: Dries Vints <dries@vints.io> Date: Mon Jan 10 16:31:01 2022 +0100 wip commit 580df99c842eb264b62672b442f007082a9d20fa Author: Dries Vints <dries@vints.io> Date: Mon Jan 10 16:30:05 2022 +0100 wip commit f3b7651bd0ea0fcd4261c4669aadf1d1d5d5382f Author: StyleCI Bot <bot@styleci.io> Date: Mon Jan 10 15:24:00 2022 +0000 Apply fixes from StyleCI commit cc03211ee8dd4af42ef4e147fe7cb826cbd321d2 Merge: 5d8eb84f9 92ce2b9d1 Author: Dries Vints <dries@vints.io> Date: Mon Jan 10 16:23:21 2022 +0100 Merge branch '8.x' # Conflicts: # .github/workflows/tests.yml # composer.json # src/Illuminate/Broadcasting/composer.json # src/Illuminate/Collections/Collection.php # src/Illuminate/Console/Scheduling/ScheduleListCommand.php # src/Illuminate/Database/Query/Builder.php # src/Illuminate/Support/composer.json commit 5d8eb84f93703f16cab9606a800cf7fe2426d850 Author: Dries Vints <dries@vints.io> Date: Mon Jan 10 15:15:53 2022 +0100 Update FilesystemManager.php (#40321) commit 5da821b474af43249b903434b94b80aaf841a39f Author: Dries Vints <dries@vints.io> Date: Mon Jan 10 11:33:49 2022 +0100 Update FilesystemManager.php commit 13e5fbf4c2a2effb28d18686efd2d49c21b56e50 Author: Taylor Otwell <taylor@laravel.com> Date: Fri Jan 7 15:26:42 2022 -0600 wip commit b61eb6feefd28675dc0fce373c00ae034ff82420 Author: Taylor Otwell <taylor@laravel.com> Date: Fri Jan 7 15:26:03 2022 -0600 wip commit bb4035b76dac1f1e7b412688dd3ac16185be72cf Author: Choraimy Kroonstuiver <3661474+axlon@users.noreply.github.com> Date: Fri Jan 7 16:06:55 2022 +0100 Throw invalid argument exception from cache helper (#40287) commit 281ed58eb05259f307697f41a35f4824b2820f79 Author: Nuno Maduro <enunomaduro@gmail.com> Date: Thu Jan 6 23:26:04 2022 -0500 [9.x] Adds implicit `Enum` route binding (#40281) * Adds implicit Backed Enum route binding * Fixes tests on PHP 8.0 * Only accepts backed enums with `string` backing type * Refactors name of `isParameterBackedEnum` * Rewords docs * formatting * fix variable Co-authored-by: Taylor Otwell <taylor@laravel.com> commit 14155b620d0ebbf6b8fe69acaca5afe8029a4372 Author: Mior Muhammad Zaki <crynobone@gmail.com> Date: Fri Jan 7 06:58:41 2022 +0800 [9.x] Generic Type for `Illuminate\Support\Fluent` (#40273) * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * Implements existing generic interfaces Co-authored-by: Nuno Maduro <enunomaduro@gmail.com> commit ac7e72a5e58e3e71e776da507eb6ed3a7e6a03ac Author: Taylor Otwell <taylor@laravel.com> Date: Thu Jan 6 10:32:13 2022 -0600 formatting commit 4c513ef1749111d1a822bcc259d1432a2f4b9d61 Author: Nuno Maduro <enunomaduro@gmail.com> Date: Thu Jan 6 11:24:10 2022 -0500 [9.x] Reinvents `route:list` command (#40269) * Improves CLI output of `route:list` command * Uses same vertical padding * Refactors mutation of routes * Fixes right padding on non-verbose mode * Fixes extra spacing * Displays name on non-verbose mode * minor formatting Co-authored-by: Taylor Otwell <taylor@laravel.com> commit e6c8aaea886d35cc55bd3469f1a95ad56d53e474 Author: Mior Muhammad Zaki <crynobone@gmail.com> Date: Thu Jan 6 22:38:00 2022 +0800 [9.x] Use standard path helper for `Application::langPath()` (#40274) * [9.x] Use standard path helper for Application::langPath() Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * Utilise `useLangPath()` instead of trying to resolve `is_dir()` on each method call. Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> commit b87ff62e44cfa854b2bdc8178029a7ba5ae6743c Author: Dries Vints <dries@vints.io> Date: Thu Jan 6 15:33:09 2022 +0100 [9.x] Flysystem SFTP v3 (#40279) * update dependencies * Update to league/flysystem-sftp-v3 commit e652a6b00e9bcc21765fbda917f48b8a2f172f9b Merge: 78d761e97 5321e34a3 Author: Dries Vints <dries@vints.io> Date: Thu Jan 6 11:06:31 2022 +0100 Merge branch '8.x' # Conflicts: # CHANGELOG-6.x.md # CHANGELOG-8.x.md # src/Illuminate/Broadcasting/Broadcasters/AblyBroadcaster.php # src/Illuminate/Collections/Traits/EnumeratesValues.php # src/Illuminate/Database/DBAL/TimestampType.php # src/Illuminate/Database/Eloquent/Builder.php # src/Illuminate/Filesystem/FilesystemAdapter.php # src/Illuminate/Foundation/Application.php # src/Illuminate/Mail/Transport/MailgunTransport.php # src/Illuminate/Mail/Transport/SesTransport.php # tests/Http/HttpClientTest.php commit 78d761e97351fdf5494045349f306f0736a27c7a Merge: 9191d2ccd ad3248921 Author: Taylor Otwell <taylor@laravel.com> Date: Tue Jan 4 12:50:06 2022 -0600 Merge branch 'stevebauman-master' commit ad3248921a25f9c047a787552c331c2e26c3a739 Author: Taylor Otwell <taylor@laravel.com> Date: Tue Jan 4 12:49:59 2022 -0600 formatting commit 5828d6cfb7acc2e3f5493513d08798d4f77b2a93 Author: Dries Vints <dries@vints.io> Date: Tue Jan 4 16:58:58 2022 +0100 [9.x] Add support for psr/simple-cache v2 and v3 (#40249) * Add support for psr/simple-cache v2 and v3 * wip * wip commit 9191d2ccdd63d340794f58545a69636e94b1753b Author: Dries Vints <dries@vints.io> Date: Tue Jan 4 16:58:58 2022 +0100 [9.x] Add support for psr/simple-cache v2 and v3 (#40249) * Add support for psr/simple-cache v2 and v3 * wip * wip commit 6f83de81b1b492a8d7c785396e7f02c8a902bc82 Author: Steve Bauman <steven_bauman@outlook.com> Date: Tue Jan 4 09:10:18 2022 -0500 Spacing commit 47416128b151eff5189efc7b1b6598e3dd082ce8 Author: Steve Bauman <steven_bauman@outlook.com> Date: Tue Jan 4 09:09:18 2022 -0500 Spacing commit 3a87e6c490ee9848953f15ae6c7032c91488a64d Author: Steve Bauman <steven_bauman@outlook.com> Date: Tue Jan 4 09:06:28 2022 -0500 Add ability to supply HTTP client methods with `Arrayable` instances commit 924394d59bac953f4f0b142e3199c34da21b69ce Author: Samuel Štancl <samuel.stancl@gmail.com> Date: Mon Jan 3 20:37:11 2022 +0100 [9.x] Add resolveMiddleware() method to Router (#40165) commit e076a56183ddf6040174aa9a9e1854da4ceb866e Author: Mohamed Said <themohamedsaid@gmail.com> Date: Sun Jan 2 23:55:43 2022 +0200 [9.x] Add default timeout and connection timeout for the HTTP Client (#40187) * add default timeout and connection timeout for the HTTP client * Update PendingRequest.php Co-authored-by: Taylor Otwell <taylor@laravel.com> commit 2beec5ddd86f19e0ca2cdd8d3325ab2c5a4bbe0a Author: Selçuk Çukur <5716652+selcukcukur@users.noreply.github.com> Date: Thu Dec 30 23:36:42 2021 +0300 [9.x] Used str_contains instead of strpos. (#40207) * Used `str_contains` instead of `strpos`. * Used `str_contains` instead of `strpos`. commit 79952ace1625572f596f2fc83b28a519911da9da Author: Choraimy Kroonstuiver <3661474+axlon@users.noreply.github.com> Date: Tue Dec 21 23:39:12 2021 +0100 [9.x] Add cache-based maintenance mode support (#40102) * Add cache based maintenance mode support * Add a maintenance mode driver manager * Fix code style * formatting Co-authored-by: Taylor Otwell <taylor@laravel.com> commit e7237f9a8d2adaf0277ea5d01f0109459b6be641 Merge: 3ad64c525 102df6698 Author: Taylor Otwell <taylor@laravel.com> Date: Mon Dec 20 13:54:57 2021 -0600 Merge branch 'punyflash-master' commit 102df66988f6010620befb73a5f8586de9f75173 Author: Taylor Otwell <taylor@laravel.com> Date: Mon Dec 20 13:54:18 2021 -0600 formatting commit a5f21d60e04511c31c3851bfb2dd1f3ba812b216 Author: Nuno Maduro <enunomaduro@gmail.com> Date: Mon Dec 20 14:44:07 2021 -0500 [9.x] Removes core class aliases from the skeleton (#40062) * Allows to remove core class `app.aliases` from the skeleton * Removes `Redis` alias * Merges configurations * Reverts changes on Register Facades * Adds `Facade::defaultAliases` * Apply fixes from StyleCI Co-authored-by: Taylor Otwell <taylorotwell@users.noreply.github.com> commit 61e3e25b415c06d9b4c967a3f11de6b548776636 Author: Martin Krisell <martin.krisell@gmail.com> Date: Mon Dec 20 15:50:37 2021 +0100 Skip unnecessary check before calling openssl_encrypt (#40108) commit 3ad64c525226873db57079d35bc85fee79ee0279 Author: Nuno Maduro <enunomaduro@gmail.com> Date: Mon Dec 20 14:44:07 2021 -0500 [9.x] Removes core class aliases from the skeleton (#40062) * Allows to remove core class `app.aliases` from the skeleton * Removes `Redis` alias * Merges configurations * Reverts changes on Register Facades * Adds `Facade::defaultAliases` * Apply fixes from StyleCI Co-authored-by: Taylor Otwell <taylorotwell@users.noreply.github.com> commit ca53127994dda58a2dc4a4fe70f1528a1631bb02 Author: PunyFlash <puny.flash@gmail.com> Date: Mon Dec 20 18:10:22 2021 +0200 Add observer mapping commit 703f87b2166e81c8ea77cc2ae3d4898341b575d8 Author: Martin Krisell <martin.krisell@gmail.com> Date: Mon Dec 20 15:50:37 2021 +0100 Skip unnecessary check before calling openssl_encrypt (#40108) commit 66e69a2f674515cd0aa18fc596d228e4d96a959e Author: Taylor Otwell <taylorotwell@users.noreply.github.com> Date: Fri Dec 17 19:52:51 2021 +0000 Apply fixes from StyleCI commit dc4712609370415d6b29f222d4c3bfeabf10ff9f Author: Wim Ulkeman <wimulkeman@hotmail.com> Date: Fri Dec 17 20:52:28 2021 +0100 [9.x] Move maintenance mode logic (#40070) * chore (maintenance): move maintenance mode logic Moving the maintenance mode logic to its own class. This enables users to extend/overwrite the class with their own logic. Overwriting the logic may be needed if for example the application is running on multiple servers. Fixes #36474 * refactor (maintenance): add isUp method Adding the isUp method to check if the application is up or is down for maintenance. Relates to #36474 * doc (maintenance): document code Extend the documentation about what the code does. Also use FQN. Relates to #36474 * fix (maintenance): correctly check if in maintenance Relates to #36474 * refactor (maintenance): use make method Use the make method instead of the app function to retrieve an instance of the MaintenanceMode container. Relates to #36474 * doc (maintenance): update docblock Update the docblock with the newly added method param. Relates to #36474 * doc (maintenance): update docblock Update the docblock with the newly added method param. Relates to #36474 * style (doc): update documentation style Updating documentation style to comply to the style used within the Laravel codebase. * style (doc): update documentation style Updating documentation style to comply to the style used within the Laravel codebase. * refactor (maintenance): change namespace Move the class from its own namespace to the Foundation namespace. Relates to #36474 * style (doc): update documentation style Updating documentation style to comply to the style used within the Laravel codebase. * style (doc): update documentation style Updating documentation style to comply to the style used within the Laravel codebase. * Update src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php Co-authored-by: Dries Vints <dries@vints.io> * Update src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php Co-authored-by: Dries Vints <dries@vints.io> * refactor (maintenance): move to application Create an application methode to retrieve the MaintenanceMode instance. This method reduces the need to fetch the MaintenanceMode with the usage of an additional argument in the middleware. Relates to #36474 * doc (maintenance): add DockBlock Adding documentation for the newly added methods. Relates to #36474 * refactor (maintenance): use application method Use the application method instead of using autowiring. The application method provides the MaintenanceMode instance which removes the requirement to inject the class in the handler method. Relates to #36474 * Update src/Illuminate/Foundation/MaintenanceMode.php Co-authored-by: Dries Vints <dries@vints.io> * Update src/Illuminate/Foundation/MaintenanceMode.php Co-authored-by: Dries Vints <dries@vints.io> * refactor (maintenance): remove comparison Remove the comparison with the false value. The method always returns a bool which only allows a true or false return value. This make the comparison redundant. Relates to #36474 * chore (code): remove unused import Remove the unused import. Because the FQN is used in the DocBlock the import has become redundant. * refactor (maintenance): add interface Add an interface under the contracts to enable developers to easily extend the MaintenanceMode class. * style (doc): update documentation style Updating documentation style to comply to the style used within the Laravel codebase. * refactor (maintenance): bind instance to contract Bind the default MaintenanceMode class to the contract reference in the service container. This enables users to set-up their own contract binding to overwrite the default Maintenance Mode behavior. * style (doc): update documentation style Updating documentation style to comply to the style used within the Laravel codebase. * Update src/Illuminate/Foundation/Providers/FoundationServiceProvider.php Co-authored-by: Choraimy Kroonstuiver <3661474+axlon@users.noreply.github.com> * formatting and renaming Co-authored-by: Wim Ulkeman <wulkeman@assuradeurengilde.nl> Co-authored-by: Dries Vints <dries@vints.io> Co-authored-by: Choraimy Kroonstuiver <3661474+axlon@users.noreply.github.com> Co-authored-by: Taylor Otwell <taylor@laravel.com> commit ec7045ef0599e1ae64fd3a97e73b64de3ddb3693 Author: Matt Kingshott <51963402+mattkingshott@users.noreply.github.com> Date: Fri Dec 17 16:43:27 2021 +0000 [9.x] Allow HTTP client requests with retries to optionally throw RequestExceptions (#40079) * Update PendingRequest.php * Update Factory.php * Update HttpClientTest.php commit 8e46f9ce862162c8820aee24113d41cc7763c7ad Author: Graham Campbell <GrahamCampbell@users.noreply.github.com> Date: Fri Dec 17 16:33:17 2021 +0000 Restore psr/log v1 support (#40093) commit bcf9ed1d415fc11b4ba7d956b44284938d2ce467 Author: Dries Vints <dries@vints.io> Date: Fri Dec 17 15:49:46 2021 +0100 Fix vendor publish command (#40081) commit 32026038a448a939014faf62894cfd1e75889066 Author: Dries Vints <dries@vints.io> Date: Fri Dec 17 15:45:15 2021 +0100 [9.x] PSR Log v3 (#40087) * PSR Log v3 * Apply fixes from StyleCI * Re-add support for psr/log v2 * formatting Co-authored-by: Taylor Otwell <taylorotwell@users.noreply.github.com> Co-authored-by: Taylor Otwell <taylor@laravel.com> commit 77b0e11c2e47a4fb89566a6ab93f4816a19ef829 Merge: a1f66ba8e a04927917 Author: Dries Vints <dries@vints.io> Date: Fri Dec 17 08:45:09 2021 +0100 Merge branch '8.x' # Conflicts: # CHANGELOG-8.x.md # composer.json # src/Illuminate/Broadcasting/composer.json # src/Illuminate/Foundation/Application.php # src/Illuminate/Mail/composer.json commit a1f66ba8e36f7ea221555bb8ed3a43c4999be001 Author: Mateus Junges <mateus@junges.dev> Date: Thu Dec 16 13:26:58 2021 -0300 [9.x] Fix array to string conversion when using custom validation messages for size rules (#40074) * fix array to string conversion when using custom validation messages for size rules * ci fixes * remove missing comment * formatting Co-authored-by: Taylor Otwell <taylor@laravel.com> commit 96d2b48e45b9d113b95ce0edf542b3ffc76c5176 Author: vlakoff <vlakoff@gmail.com> Date: Wed Dec 15 14:47:02 2021 +0100 Proper fix when provided path is '0' (#40050) commit c7d6fe53cdcdb9dbc09ffa62c50cba7b2b98b1a7 Merge: 94e846b4d f1d8ed543 Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Tue Dec 14 16:50:42 2021 +0000 Merge branch '8.x' commit 94e846b4db46229a7939d9042d2557123fe45035 Author: Nuno Maduro <enunomaduro@gmail.com> Date: Tue Dec 14 08:55:12 2021 -0500 [9.x] Allows to remove the `server.php` file (#40034) * Allows to remove the `server.php` file * Apply fixes from StyleCI Co-authored-by: Taylor Otwell <taylorotwell@users.noreply.github.com> commit 8dde758e7c93771ccc2c3d6423f9b69cd192525e Author: Dries Vints <dries@vints.io> Date: Tue Dec 14 09:17:31 2021 +0100 Update composer.json commit f00a541222fdc622dea543a08fef3e113ac6f37d Author: ppodds <oscar20020629@gmail.com> Date: Tue Dec 14 02:05:39 2021 +0800 refactor getTrustedHeaderNames with match function (#40019) commit ad2141fa6a872818461ba509e7b21316576a910e Author: ppodds <oscar20020629@gmail.com> Date: Mon Dec 13 22:58:43 2021 +0800 [9.x] Support x-forwarded-prefix in TrustProxies.php (#40014) * support x-forwarded-prefix * fix TrustProxies code style * test x-forwarded-prefix in TrustProxiesTest commit b11f946bea7595636aeeb024943dc0b9f59dff20 Author: Andrey Filippov <afilippov1985@users.noreply.github.com> Date: Mon Dec 13 18:57:59 2021 +0400 case when '0' passed (#40013) commit e70cb9d69a379f79881d7d609d99713a94890e26 Merge: bb1f59b5d f3e5cb3a0 Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Mon Dec 13 00:05:05 2021 +0000 Merge branch '8.x' commit bb1f59b5d0ff308b8d129a9639f04ff8940694dd Author: Nuno Maduro <enunomaduro@gmail.com> Date: Fri Dec 10 13:05:31 2021 +0000 Imports without model events trait on seeds (#39974) commit 985b2cf1845b544cdfd744ee68be2dfa95652c51 Author: Quynh Nguyen <seriquynh@gmail.com> Date: Thu Dec 9 19:56:13 2021 +0700 Fix ThrottleRequestsException (#39951) commit 8bbe427b177e0eeb35fa337cd73dd196234f9efd Author: Nuno Maduro <enunomaduro@gmail.com> Date: Wed Dec 8 13:54:49 2021 +0000 [9.x] Adds `WithoutModelEvents` trait for running seeds without Model Events (#39922) * Adds `WithoutEvents` trait for application seeders * Renames `WithoutEvents` to `WithoutModelEvents` * Adjusts comment Co-authored-by: James Brooks <james@alt-three.com> Co-authored-by: James Brooks <james@alt-three.com> commit c892c2cc2991062f14da55a7661f00bc3b083738 Author: rennokki <rennokki@gmail.com> Date: Wed Dec 8 15:05:42 2021 +0200 [9.x] Pusher Client instance initialization (#39924) * Added support for client in Pusher instance * Reverted accidental merge conflict changes * formatting Co-authored-by: Taylor Otwell <taylor@laravel.com> commit 1873d2a68a37947348c5bacc7b9251b06b5f0e49 Author: Quynh Nguyen <seriquynh@gmail.com> Date: Wed Dec 8 20:02:01 2021 +0700 [9.x] Refactor ExceptionHandler render method (#39930) * Refactor ExceptionHandler render method * Restore unexpected format change * Fix coding style * Fix coding style * formatting Co-authored-by: Taylor Otwell <taylor@laravel.com> commit d8bea92fbfaa7d7a83fe31bf01cd16a5c5d253df Author: Chris Morrell <inxilpro@users.noreply.github.com> Date: Tue Dec 7 16:37:40 2021 -0500 [9.x] Refactor scheduled event lifecycle (#39539) * Scheduled event lifecycle refactor * Address background callbacks * Code style * StyleCI * formatting Co-authored-by: Taylor Otwell <taylor@laravel.com> commit dc768b4ee10a89d6a6a1f3d5b2c0a0b164fc33b6 Merge: eb66b9669 857964de3 Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Tue Dec 7 15:10:32 2021 +0000 Merge branch '8.x' commit eb66b96691dc612854c3ffb5f6535545666f99dd Author: Jonas Staudenmeir <mail@jonas-staudenmeir.de> Date: Mon Dec 6 15:16:44 2021 +0100 Remove parameter from DecoratesQueryBuilder::delete() (#39900) commit faa56bd0b1e6e90aae070a31d9c7cf0baea8c680 Author: Dries Vints <dries@vints.io> Date: Fri Dec 3 17:02:07 2021 +0100 Re-enable PostgreSQL build (#39890) commit 940b18fb76211e660132bc51a03dfc48ab6115c8 Merge: 4a57b48f1 1f7004008 Author: Dries Vints <dries@vints.io> Date: Fri Dec 3 16:49:44 2021 +0100 Merge branch '8.x' # Conflicts: # src/Illuminate/Database/Query/Builder.php commit 4a57b48f10fb99f58593fdd54e051cf8d9bda1f8 Author: Dries Vints <dries@vints.io> Date: Thu Dec 2 21:59:17 2021 +0100 wip commit 9c88e7cfa39bde1a278d44cc792878a5239d79ff Author: Dries Vints <dries@vints.io> Date: Thu Dec 2 21:54:13 2021 +0100 wip commit 1d6380da6e5e5b135b5e55f86ba70869de5caac1 Author: Dries Vints <dries@vints.io> Date: Thu Dec 2 21:52:27 2021 +0100 wip commit 68db4e251f839bbc4aa77b222ef9729c2e27b749 Merge: 6cb52b213 0b0d3c53b Author: Dries Vints <dries@vints.io> Date: Thu Dec 2 21:51:43 2021 +0100 Merge branch '8.x' # Conflicts: # .github/workflows/tests.yml # CHANGELOG-8.x.md # composer.json # src/Illuminate/Cache/composer.json # src/Illuminate/Collections/composer.json # src/Illuminate/Console/composer.json # src/Illuminate/Cookie/composer.json # src/Illuminate/Database/composer.json # src/Illuminate/Filesystem/composer.json # src/Illuminate/Foundation/Application.php # src/Illuminate/Http/composer.json # src/Illuminate/Queue/composer.json # src/Illuminate/Routing/composer.json # src/Illuminate/Session/composer.json # src/Illuminate/Support/composer.json # src/Illuminate/Validation/composer.json commit 6cb52b213ab1f522c6c7005dc575e4f836cdf7db Author: Quynh Nguyen <seriquynh@gmail.com> Date: Wed Dec 1 19:49:08 2021 +0700 Replace foreach by collection contains in Request class (#39857) commit 8d7c7a44bd919e2567d61796b71b254009e6a8cd Author: Beau Simensen <beau@dflydev.com> Date: Tue Nov 30 08:30:17 2021 -0600 Add giveConfig to ContextualBindingBuilder (#39819) commit 49aac46f7c1bb9d9e635b1542cfb9925073f8244 Author: Dries Vints <dries@vints.io> Date: Tue Nov 30 15:15:37 2021 +0100 Use Laravel call for retrieving Session (#39830) commit 63bb589b760b6497c840858409e3b5da0ee287de Author: Sebastian De Deyne <sebastiandedeyne@gmail.com> Date: Mon Nov 29 20:36:57 2021 +0100 Add callOnce to Seeder (#39812) commit ee5efbccde388b7ceefac6a553be1d9b95801c25 Author: Matan Yadaev <matan.yed@gmail.com> Date: Mon Nov 29 16:42:42 2021 +0200 [9.x] Improve Collection's callable default return types (#39805) * improve collection callable default return types * change callable to closure * fix enumerable closure default return types * Disable PostgreSQL build for now * improve collection callable default return types * change callable to closure * fix enumerable closure default return types Co-authored-by: Dries Vints <dries@vints.io> commit de98bd0bf622feaad03da8fb2edb8edb2577a087 Merge: ae3975744 606ac0a38 Author: Dries Vints <dries@vints.io> Date: Mon Nov 29 15:32:39 2021 +0100 Merge branch '8.x' # Conflicts: # CHANGELOG-6.x.md # CHANGELOG-8.x.md # src/Illuminate/Database/Eloquent/Builder.php # src/Illuminate/Foundation/Application.php commit ae39757442badcd27f11c7bcfa63f88eec7e486e Author: Dries Vints <dries@vints.io> Date: Mon Nov 29 14:18:35 2021 +0100 Disable PostgreSQL build for now commit 9894c2c64dc70f7dfda2ac46dfdaa8769ce4596a Author: Jason McCreary <jason@pureconcepts.net> Date: Thu Nov 18 09:51:53 2021 -0500 [9.x] Remove `assertDeleted` (#39661) * Remove assertDeleted * Correct names commit cea563d48e944a55f8e42042a5a93013ed58d4ad Merge: 156cc09b4 989e1daa5 Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Wed Nov 17 15:08:50 2021 +0000 Merge branch '8.x' commit 156cc09b46cab5c0a5afa1ae73d3b3cf23431f21 Merge: 5646989ef aa2a02d6d Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Wed Nov 17 14:54:42 2021 +0000 Merge branch 'master' of https://github.com/laravel/framework commit 5646989ef626f0418aac6cef0b89876ac44e3e65 Merge: 8f9ddea44 8b36ce2ec Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Wed Nov 17 14:54:33 2021 +0000 Merge branch '8.x' commit aa2a02d6d3ee3e40e9ca23d76cb94859c2a94f4f Author: Bogdan Kharchenko <32746389+bogdankharchenko@users.noreply.github.com> Date: Wed Nov 17 09:54:32 2021 -0500 [9.x] Use Relative View Path Name When Hashing Compiled Views (#39642) * [9.X] Use Relative View Path When Hashing Compiled Views * Set basePath default * formatting * add config option Co-authored-by: Taylor Otwell <taylor@laravel.com> commit 8f9ddea4481717943ed4ecff96d86b703c81a87d Author: Andrey Filippov <afilippov1985@users.noreply.github.com> Date: Wed Nov 17 18:46:34 2021 +0400 [9.x] Fix \Illuminate\Support\Facades\App::storagePath() method ignores $path argument (#39648) * add $path argument to storagePath() * Update Application.php * formatting Co-authored-by: Taylor Otwell <taylor@laravel.com> commit e13132b716a317aca54e9d25133edc31d4373d18 Author: Dries Vints <dries@vints.io> Date: Tue Nov 16 15:28:43 2021 +0100 [9.x] Fix postgresql build (#39531) * Fix PostgreSQL build * wip * Gracefully handle schema key deprecation commit 5e0b273ae3012cbb1e959efe4627f03811b705cd Author: Tobias Petry <tp@webstrategy.de> Date: Mon Nov 15 22:17:32 2021 +0100 use jsonb type for pgsql whereJsonLength (#39619) commit 2534e000a4c930dee93736ab72cfc145127cac29 Author: Ahmed Mohamed Abd El Ftah <ahmedabdelftah95165@gmail.com> Date: Mon Nov 15 23:06:21 2021 +0200 Modify DatabaseRule to accept Arrayable instance inside where methods (#39621) commit c46d7351161c867b7e6b02b3a01257de34867993 Author: Choraimy Kroonstuiver <3661474+axlon@users.noreply.github.com> Date: Mon Nov 15 21:09:11 2021 +0100 Exclude PHPStan related files from distributions (#39622) commit 5dc64fd90b67d8b14d2fb55f1db5b0ee4ef523b4 Author: Nuno Maduro <enunomaduro@gmail.com> Date: Mon Nov 15 20:07:06 2021 +0000 Check types only in stable versions of PHP (#39617) commit 23cdfcf3362db70c911269bc1d02913b4a09dabb Author: Quynh Nguyen <seriquynh@gmail.com> Date: Mon Nov 15 21:45:52 2021 +0700 [9.x] Use match expression where possible (#39583) * Use match expression where possible * Fix coding style * Remove unneeded parentheses commit 4baf4f743baeccce5abd4d51b86cbf00f0970daa Author: Nuno Maduro <enunomaduro@gmail.com> Date: Mon Nov 15 14:31:49 2021 +0000 Makes `with` generic (#39615) commit 032c69a1ef2c693b2147309591612b9c4ae9eae1 Author: Quynh Nguyen <seriquynh@gmail.com> Date: Mon Nov 8 22:13:08 2021 +0700 [9.x] Use request isMethod instead of method comparison (#39526) * Use request isMethod instead of method comparison * Fix testGuestPutPreviousUrlInSession commit 535f1847a3017ff80d75fd26ef4029861ba74abf Author: Dries Vints <dries@vints.io> Date: Mon Nov 8 14:34:29 2021 +0100 Remove minimum versions in builds commit ba2e05fd9491f7de4a3e5b1e418ce604a302de0b Merge: 481cd52e0 0218f6b82 Author: Dries Vints <dries@vints.io> Date: Mon Nov 8 11:40:05 2021 +0100 Merge branch '8.x' commit 481cd52e06cfa56c941d93ec5401438b6cbf7a23 Author: Taylor Otwell <taylorotwell@users.noreply.github.com> Date: Sun Nov 7 21:48:21 2021 +0000 Apply fixes from StyleCI commit 0565d9400144bf3f03401e2dda87264cdd649bf3 Author: Sébastien Nikolaou <sebastien@stonewave.net> Date: Sun Nov 7 23:48:03 2021 +0200 [9.x] Improve `Support\LazyCollection` type definitions (#39506) * Make LazyCollection generic * Remove `toBase` type test from LazyCollection commit 5869c9d8491ddbd6ee689a9aea9f12e1663d8b35 Author: Dries Vints <dries@vints.io> Date: Sat Nov 6 16:21:59 2021 +0100 Disable postgres build for now commit 2d1fa2f371d224b6777bedfe50b30851592c7eed Author: Dries Vints <dries@vints.io> Date: Sat Nov 6 16:15:10 2021 +0100 wip commit 1795c8c7f1dd24b8f761cf7e1bc6830505c65c4e Author: Kennedy Tedesco <kennedyt.tw@gmail.com> Date: Sat Nov 6 12:11:56 2021 -0300 [9.0] Change some strpos to str_contains (#39503) commit fcb7acb3df64e6686acbaa8274b2df18cd1ee47c Author: Kennedy Tedesco <kennedyt.tw@gmail.com> Date: Sat Nov 6 12:11:27 2021 -0300 [9.0] Change some switch to match (#39504) commit 7f6fb00b539ac1f52eb5392c3eca57eb6b1f015d Author: Dries Vints <dries@vints.io> Date: Sat Nov 6 16:06:15 2021 +0100 remove test commit 417d5fc30c2595c227c93e2415674d88143566f2 Author: Dries Vints <dries@vints.io> Date: Sat Nov 6 15:44:41 2021 +0100 Resolve merge conflicts commit ef1eb4dafea06cc79c6f472a1cdedb2de02360d5 Merge: ceadf6ea6 10483fbd0 Author: Dries Vints <dries@vints.io> Date: Sat Nov 6 15:43:30 2021 +0100 Merge branch '8.x' # Conflicts: # .github/workflows/tests.yml # CHANGELOG-6.x.md # CHANGELOG-8.x.md # composer.json # src/Illuminate/Collections/Collection.php # src/Illuminate/Database/Eloquent/Factories/Factory.php # src/Illuminate/Database/Query/Builder.php # src/Illuminate/Filesystem/FilesystemAdapter.php # src/Illuminate/Foundation/Application.php # src/Illuminate/Mail/composer.json # src/Illuminate/Queue/composer.json # src/Illuminate/Support/composer.json # src/Illuminate/Validation/composer.json # tests/Mail/MailSesTransportTest.php commit ceadf6ea68c5ef316abfc618879f2cf9290e45b3 Author: Nuno Maduro <enunomaduro@gmail.com> Date: Thu Nov 4 16:54:02 2021 +0100 Uses `"phpstan/phpstan": "^1.0"` (#39479) commit ec8f88bc3f84744408f24dc5c2e3b9ed0f1e9ac8 Author: Nuno Maduro <enunomaduro@gmail.com> Date: Fri Oct 22 20:56:55 2021 +0100 Fixes `Collection::unique` types (#39323) commit f3aedf229f6f40e6063f170ef0b4f3bba2c2abe2 Author: Dries Vints <dries@vints.io> Date: Fri Oct 22 18:52:10 2021 +0200 Add auto close for PRs to sub splits commit 7708c10093d6a2c134cafdf279f4beaac84ebd6a Author: Dries Vints <dries@vints.io> Date: Fri Oct 22 17:44:55 2021 +0200 [9.x] Auto close pull requests on illuminate repositories (#39318) * Auto close pull requests on illuminate repositories * Update close-pull-request.yml Co-authored-by: Taylor Otwell <taylor@laravel.com> commit 477ca405584b449ac139d2155f082b43a95307fe Merge: a3e7f48e3 4b785c616 Author: Dries Vints <dries@vints.io> Date: Fri Oct 22 14:41:12 2021 +0200 Merge branch '8.x' # Conflicts: # CHANGELOG-6.x.md # CHANGELOG-8.x.md # src/Illuminate/Collections/Traits/EnumeratesValues.php # src/Illuminate/Foundation/Application.php # src/Illuminate/Queue/SerializableClosureFactory.php # tests/Testing/TestResponseTest.php commit a3e7f48e3ce9a34a6840410182a3ed8f4ad03c37 Author: Choraimy Kroonstuiver <3661474+axlon@users.noreply.github.com> Date: Thu Oct 21 15:16:16 2021 +0200 Remove TrustHosts reliance on config helper (#39294) commit 161098df30b3a00b917633574c48b68092ad816f Author: Nuno Maduro <enunomaduro@gmail.com> Date: Wed Oct 13 14:36:21 2021 +0100 Makes HasFactory generic (#39171) commit 40e6536edbc05733aded475f8419566bf6046946 Author: Lucas Michot <lucas@semalead.com> Date: Tue Oct 12 19:04:53 2021 +0200 Do not let SetCacheHeaders override the eTag. (#39166) commit 760d7055d13acbcba7464deb0eeabc7e903768d7 Author: Nuno Maduro <enunomaduro@gmail.com> Date: Tue Oct 12 14:13:35 2021 +0100 Makes database factories generic (#39169) commit 438eba7816b6ea3531596dadd2d1cb60ef13414b Author: mpyw <ryosuke_i_628@yahoo.co.jp> Date: Tue Oct 12 22:12:37 2021 +0900 [9.x] Add `hasUser` method to Guard contract (#39167) * [9.x] Add `hasUser` method to Guard contract - https://github.com/laravel/framework/pull/24518 in this PR was added method `hasUser` to the GuardHelper trait. As for me it will be useful to have this method in the contract. * Update Guard.php Co-authored-by: Tetiana Blindaruk <t.blindaruk@gmail.com> Co-authored-by: Taylor Otwell <taylor@laravel.com> commit c7278f172ecd0447f6f6ce21516bd48273d7c9b7 Author: Taylor Otwell <taylorotwell@users.noreply.github.com> Date: Fri Oct 8 21:10:48 2021 +0000 Apply fixes from StyleCI commit b25f211461c4ad75f5861205439ac8771c4d2320 Author: Jeffrey Angenent <hello@devfrey.nl> Date: Fri Oct 8 23:10:32 2021 +0200 [9.x] Prevent calling count() on LazyCollection in Blade loops (#39141) * Prevent calling count() on LazyCollection in Blade loops * Update ManagesLoops.php Co-authored-by: Taylor Otwell <taylor@laravel.com> commit 2232263cd2077f15c182cf9b9bc8862e95992de8 Author: Nuno Maduro <enunomaduro@gmail.com> Date: Tue Oct 5 14:01:15 2021 +0100 Removes `opis/closure` package (#39087) commit ae0ef69bcc1573b4e6695bb7e560ded03eaa89ec Author: Dries Vints <dries@vints.io> Date: Wed Sep 29 15:30:37 2021 +0200 Re-enable PHP 8.1 tests commit 45113cf4ce4f343ef94e081ce77517c7ae0497ae Merge: d6fd27cdb 5588c7a0c Author: Dries Vints <dries@vints.io> Date: Wed Sep 29 15:30:11 2021 +0200 Merge branch '8.x' # Conflicts: # tests/Mail/MailSesTransportTest.php commit d6fd27cdb37b41f58135a8148e37e523f5a7c632 Author: netpok <netpok@gmail.com> Date: Wed Sep 29 15:10:21 2021 +0200 Remove password rule (#39030) commit 12d6652d297c52242fba24129ce66284f15dd0aa Author: Dries Vints <dries@vints.io> Date: Wed Sep 29 14:11:16 2021 +0200 Fail on error for now for PHP 8.1 tests commit 4f685f021cb8c596e6a329aa57a23e3f55ff7ca6 Author: Dries Vints <dries@vints.io> Date: Wed Sep 29 11:34:43 2021 +0200 Fix test commit 42f2b9318c7c3cac477dcfa47fbb60ea671279fb Author: Dries Vints <dries@vints.io> Date: Wed Sep 29 11:27:41 2021 +0200 Re-add predis commit f43d32a2c86d2095ec9d114f5f46757fe2a46ace Merge: 747032bf5 43c8bff8d Author: Dries Vints <dries@vints.io> Date: Wed Sep 29 11:16:52 2021 +0200 Merge branch '8.x' # Conflicts: # CHANGELOG-8.x.md # composer.json # src/Illuminate/Console/Command.php # src/Illuminate/Database/PDO/SqlServerDriver.php # src/Illuminate/Database/Query/Builder.php # src/Illuminate/Database/composer.json # src/Illuminate/Foundation/Application.php # src/Illuminate/Mail/Transport/MailgunTransport.php # src/Illuminate/Mail/Transport/SesTransport.php # src/Illuminate/Mail/Transport/Transport.php # src/Illuminate/Mail/composer.json # src/Illuminate/Queue/composer.json # src/Illuminate/Support/composer.json # src/Illuminate/Testing/composer.json # tests/Mail/MailSesTransportTest.php commit 747032bf5d9e4f9e8205c75ec5fad48637f999c4 Author: Graham Campbell <GrahamCampbell@users.noreply.github.com> Date: Sun Sep 26 21:38:17 2021 +0100 [9.x] Revert "[9.x] Update psr/log version" and fix properly (#38952) * Revert "[9.x] Update psr/log version (#38852)" This reverts commit 2b2420b501355047a43d8a11299b3b0cf79cf134. * Jam return types on the log methods * And again commit 5ea1f918ec22a5a5778e666845545acb1b38f8c8 Author: Matej Kormuth <dobrakmato@gmail.com> Date: Fri Sep 24 19:56:21 2021 +0200 Add `saveQuietly` convenience methods to relations (#38934) commit 8d53ebe28ae8f82711f2b165db62bd7bf9b0b499 Author: Chris Morrell <inxilpro@users.noreply.github.com> Date: Wed Sep 22 12:50:02 2021 -0400 [9.x] Non-breaking forwardDecoratedCallTo refactor (#38908) commit 53ac15248368ebda4a809b08ec0f25218ee9e6d5 Author: Taylor Otwell <taylorotwell@gmail.com> Date: Mon Sep 20 14:52:23 2021 -0500 add method to contract commit fcdd3a58bfa199bf5161614dd6dc07698c606500 Author: Francisco Madeira <xico2k@gmail.com> Date: Mon Sep 20 15:41:28 2021 +0100 [9.x] Only throws BroadcastException on all drivers (#38862) * Normalize Broadcasting Exceptions to all return BroadcastException * Import BroadcastException and fix typo commit 818d7366bf2a2286e538974ffba47aa3324706d1 Author: Sjors Ottjes <sjorsottjes@gmail.com> Date: Mon Sep 20 16:07:26 2021 +0200 [9.x] Add support for 4xx/5xx fallback error views (#38877) * add fallback 4xx/5xx error views * cs commit 2b2420b501355047a43d8a11299b3b0cf79cf134 Author: Kyle <kylekatarnls@users.noreply.github.com> Date: Sat Sep 18 19:55:33 2021 +0200 [9.x] Update psr/log version (#38852) * Update psr/log * Add types for LogManager * Update Logger typing commit b0a0d667210cc560b709d9d4d0900ed08f571064 Merge: 097107ab5 2832ecc98 Author: Nuno Maduro <enunomaduro@gmail.com> Date: Wed Sep 15 12:09:52 2021 +0100 Merge pull request #38821 from canvural/patch-3 [9.x] Fixes invalid PHPDoc syntax commit 2832ecc98401b587b4f3a835da624d43efb7a2dd Author: Can Vural <can9119@gmail.com> Date: Wed Sep 15 12:48:45 2021 +0200 Update PHPDocs commit 3eb951d206f6f6341bd4cac2a4db06168de2c593 Author: Can Vural <can9119@gmail.com> Date: Wed Sep 15 12:32:09 2021 +0200 Fixes invalid PHPDoc syntax commit 097107ab50ce754c709313fc75a6f1f4a9389bfc Author: Dries Vints <dries@vints.io> Date: Tue Sep 14 15:57:25 2021 +0200 [9.x] Implement Symfony Mailer (#38481) * Implement Symfony Mailer * Apply fixes from StyleCI * Update src/Illuminate/Mail/Message.php Co-authored-by: michael-rubel <contact@observer.name> * Update src/Illuminate/Mail/Message.php Co-authored-by: michael-rubel <contact@observer.name> * Update src/Illuminate/Mail/Message.php Co-authored-by: michael-rubel <contact@observer.name> * Update src/Illuminate/Mail/Message.php Co-authored-by: michael-rubel <contact@observer.name> * Update src/Illuminate/Mail/Message.php Co-authored-by: michael-rubel <contact@observer.name> * Update Array and Log transports * Apply fixes from StyleCI * Fix interface implementation * Update Mailer * Apply fixes from StyleCI * Rename * Remove method * Fix tests * Apply fixes from StyleCI * Work on Mailer tests * type-hint * Fix Mailer tests * Fix more tests * Apply fixes from StyleCI * Migrate Mailgun transport * Migrate Postmark transport * Replace SesTransport * Remove transports from dev dependencies * Allow setting options on esmtp transport * Fix Postmark transport * Fix embedding files * Clarify API transports * Apply fixes from StyleCI * Fix SES transport setup * Add MessageStreamId to Postmark Transport again (#38748) * Update symfony mailer docblocks (#38773) * Update docblocks from Swift Mailer to Symfony Mailer * Make TransportInterface more specific * Add Session Token to SES Transport (#38797) * Update src/Illuminate/Mail/Transport/ArrayTransport.php Co-authored-by: Julius Kiekbusch <jubeki99@gmail.com> * fix docblock * Add Wrapper for Symfony SentMessage (#38803) * Create SentMessage wrapper for Symfony's SentMessage * Wrap Symfony SentMessage * Update Docblocks to Illuminate\Mail\SentMessage * Fix sendMailable * Update SentMessage.php Co-authored-by: Dries Vints <dries@vints.io> Co-authored-by: Taylor Otwell <taylorotwell@users.noreply.github.com> Co-authored-by: michael-rubel <contact@observer.name> Co-authored-by: Julius Kiekbusch <jubeki99@gmail.com> Co-authored-by: Taylor Otwell <taylor@laravel.com> Co-authored-by: Taylor Otwell <taylorotwell@gmail.com> commit 3234a8dfecbb12140e1ce980e415fcd0363f320a Merge: 4e6e23593 7d3151c66 Author: Dries Vints <dries@vints.io> Date: Mon Sep 13 17:45:45 2021 +0200 Merge branch '8.x' commit 4e6e23593951085731600cb95cb8e3c039f4e0a3 Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Thu Sep 9 15:29:14 2021 +0100 CS fixes commit c1b38eaf84f72ec0e8e836566df96bc01d00b6ac Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Thu Sep 9 15:17:39 2021 +0100 CS fixes commit 531c05181887dc53ae61ac67b759d3ea0b00bbc1 Merge: e62401b07 6a7e8e712 Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Thu Sep 9 15:16:07 2021 +0100 Merge branch '8.x' commit e62401b07f75552baa401d52fd9ffdf62bbe7114 Merge: 016265b3c 3ab65b71b Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Thu Sep 9 14:55:38 2021 +0100 Merge branch '8.x' commit 016265b3ce00f93c028cc2355186d624f0d7934e Merge: 75969f7cc cc13463eb Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Thu Sep 9 12:45:52 2021 +0100 Merge branch '8.x' commit 75969f7cc113a014d911c73b6a9f2e5743890c00 Author: Filip Ganyicz <ganyicz.filip@gmail.com> Date: Wed Sep 8 15:52:57 2021 +0200 Add firstOr methods to relationship classes (#38694) commit 01b7c085d75426ee6542f6c530f9aff12d7529ed Merge: 73ac59546 44f16a31a Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Wed Sep 8 14:39:54 2021 +0100 Merge branch '8.x' commit 73ac59546ed326cfecba45a8674fc678b5197950 Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Wed Sep 8 14:18:11 2021 +0100 Fixed phpdoc commit 05bba7c9b099806a9e91d715d50411c69e1bbf23 Merge: 9ee0a4b89 d73de5968 Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Wed Sep 8 14:17:32 2021 +0100 Merge branch '8.x' commit 9ee0a4b895bc9e63823d8b67d56151b20437f56f Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Wed Sep 8 13:51:47 2021 +0100 CS fixes commit 60a958c95742c1c20bbb97419eb0cdf0a368eab2 Merge: b34ce627a 9e8443095 Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Wed Sep 8 13:49:54 2021 +0100 Merge branch '8.x' commit b34ce627a4653be907ff0cd06728d529ae2f4d9a Merge: 63052aed6 fcbccf9a7 Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Wed Sep 8 13:10:13 2021 +0100 Merge branch '8.x' commit 63052aed61f97fdbca7933652e6634699a9ac55f Merge: dc7563ce5 51d4755cc Author: Dries Vints <dries@vints.io> Date: Tue Sep 7 16:50:59 2021 +0200 Merge branch '8.x' # Conflicts: # src/Illuminate/Foundation/Application.php commit dc7563ce58c93a7b9d0a26332d902122d3844f88 Merge: bd7a519d5 beda5af89 Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Mon Sep 6 22:47:40 2021 +0100 Merge branch '8.x' commit bd7a519d50ff4c3350b0bd42debbe54c9fa05f56 Author: Graham Campbell <GrahamCampbell@users.noreply.github.com> Date: Mon Sep 6 19:41:08 2021 +0100 [9.x] Support the latest psr/container versions (#38692) * Support the latest psr/container versions * Added types commit a3cd40a262c12b561728558c2fd0b58182cd17e9 Merge: d69e2e069 e4ec76f7d Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Mon Sep 6 19:02:48 2021 +0100 Merge branch '8.x' commit d69e2e06949830541d59cb916d1e0be612ba5b52 Merge: 932e601d1 e7f075f59 Author: Dries Vints <dries@vints.io> Date: Thu Sep 2 11:32:11 2021 +0200 Merge branch '8.x' # Conflicts: # CHANGELOG-8.x.md # src/Illuminate/Collections/Collection.php # src/Illuminate/Foundation/Application.php # src/Illuminate/Testing/TestResponse.php commit 932e601d1e8063a51cbce95136d54367d6f3ece4 Author: Jesper Noordsij <45041769+jnoordsij@users.noreply.github.com> Date: Fri Aug 27 16:03:39 2021 +0200 [9.x] Allow for null handling in custom casts (#38039) * Pass null to custom cast set method when value is null * Add integration test for custom casts on Eloquent Model * Rename Address class to AddressCast in EloquentModelCustomCastingTest Prevents a duplicate naming conflict * Allow for proper null value handling in custom CastsAttributes implementations * Fix codestyle issue in EloquentModelCustomCastingTest.php commit b1de554157cf25ec59fa81774eb687e1692357d3 Author: Nuno Maduro <enunomaduro@gmail.com> Date: Fri Aug 27 15:01:13 2021 +0100 [9.x] Improves `Support\Collection` and `Database\Eloquent\Collection` type definitions (#38538) * Adds CI workflow * Adds phpstan * Adds work in progress regarding generic collections * Fixes missing template * Renames template * Updates test * Apply fixes from StyleCI * Adds work in progress regarding generic collections * Adds work in progress regarding generic collections * Adds work in progress regarding generic collections * Adds work in progress regarding generic collections * Adds work in progress regarding generic collections * Styling * Apply fixes from StyleCI * Apply fixes from StyleCI * Adds work in progress regarding generic collections * Remove work on Models * Revert "Remove work on Models" This reverts commit d6c42910a032f1647f07d42dc800d8be22a77963. * Removes `prefer-lowest` * Removes non needed code on CI job Co-authored-by: Dries Vints <dries@vints.io> * Fixes `Eloquent\Collection::load` types * Adds work in progress regarding generic collections * Fixes `Eloquent\Collection::load` related methods Co-authored-by: Taylor Otwell <taylorotwell@users.noreply.github.com> Co-authored-by: Dries Vints <dries@vints.io> commit 81527e7c2cf212f5e9a2616ef5b5c5debddf3bcf Author: Dries Vints <dries@vints.io> Date: Thu Aug 26 17:38:26 2021 +0200 bump commit 89b68c784e8f29b7367f71c3080d1f2ed0d61c18 Author: Dries Vints <dries@vints.io> Date: Thu Aug 26 17:23:29 2021 +0200 Update constraint commit 14c2b252f28df7072a096786163bfe2e9e0587f5 Author: Andrew Brown <browner12@gmail.com> Date: Tue Aug 24 14:33:04 2021 -0500 minor grammar fix (#38529) commit da9116ba1b3f3303a2b43d973a011975eeba3b00 Author: Antonio Pauletich <antonio.pauletich95@gmail.com> Date: Tue Aug 24 21:18:28 2021 +0200 [9.x] Adjust PHP 8 and Symfony 6 constraints in all composer.json files (#38526) * Adjust missed places for the PHP 8 and Symfony 6 upgrade * Update PHP version to be in sync with the Symfony 6 min PHP version * Update PHP constraint commit 792e42caab685c20d137ce906a2f26e03ed66280 Author: Chris Morrell <inxilpro@users.noreply.github.com> Date: Tue Aug 24 09:06:17 2021 -0400 [9.x] Split Conditionable into package (#38457) * [9.x] Split Conditionable into package * Fix issue with 8.x merge commit 908c4e4299bced9633192598b1944b1bf980bacd Merge: 078ae5c10 30e1fd3ab Author: Dries Vints <dries@vints.io> Date: Mon Aug 23 10:58:13 2021 +0200 Merge branch '8.x' commit 078ae5c1037c2c1cc8974eeb8dfc7dba7b74d9c1 Author: Dries Vints <dries@vints.io> Date: Mon Aug 23 10:56:05 2021 +0200 Update namespaces in docblocks commit 081f467ade3cea2edf7d581e20a3772c882029f5 Author: Chrysanthos <48060191+chrysanthos@users.noreply.github.com> Date: Fri Aug 20 16:50:23 2021 +0300 Dump specific key of the response (#38468) commit 1f07d753ea08234e53837c181c2c500eaa6eac42 Author: Saya <chu121su12@gmail.com> Date: Fri Aug 20 21:02:06 2021 +0800 [9.x] Lazy load queue commands (#38479) * use class name for command registration * assign defaultName for lazy loading commit 67f0a128869856cc9c4c25f21285a4e44d8ba277 Merge: f409e0433 1a2ecc9ed Author: Dries Vints <dries@vints.io> Date: Fri Aug 20 11:34:00 2021 +0200 Merge branch '8.x' commit f409e0433fd1d9186dc6dfb32e277adb74e96fdc Author: Saya <chu121su12@gmail.com> Date: Fri Aug 20 17:25:10 2021 +0800 Update firstOrFail logic (#38470) commit c95392a2ac84313a3296485f7141b6ae8bac5413 Author: Derek MacDonald <derekmd@hotmail.com> Date: Thu Aug 19 12:13:15 2021 -0400 DB queries containing JSON paths support array index references (#38391) e.g., DB::table('owner') ->where('packages[1]->name', 'laravel/framework') ->update(['packages[1]->versions[0]' => '9.0.0']); Stop compiling: UPDATE `owner` SET `packages` = JSON_SET(`packages`, $"[1]"."versions[0]", '9.0.0') WHERE json_unquote(json_extract(`packages[1]`, '$."name"')) = 'laravel/framework'; ... Instead avoid escaping array dereference characters: UPDATE `owner` SET `framework` = JSON_SET(`framework`, $[1]."versions"[0], '9.0.0') WHERE json_unquote(json_extract(`packages[1]`, '$."name"')) = 'laravel/framework'; commit 93883aebc56ae52cb5be48baeb97ba0e8662201b Merge: edbbcdbbd 5d5655b48 Author: Dries Vints <dries@vints.io> Date: Thu Aug 19 17:27:12 2021 +0200 Merge branch '8.x' # Conflicts: # CHANGELOG-6.x.md # CHANGELOG-8.x.md # src/Illuminate/Foundation/Application.php commit edbbcdbbda1ba17e1ae7c210dfb10f67a89da84f Author: Derek MacDonald <derekmd@hotmail.com> Date: Tue Aug 17 09:11:32 2021 -0400 Make Application@handle() meet Symfony 6's updated interface (#38413) Add return type. This is a great use of our time. commit 585b6042f6ca75baa2eb63cecfb0a3ada49140e9 Author: Dries Vints <dries@vints.io> Date: Mon Aug 16 19:53:36 2021 +0200 [9.x] Fix Symfony v6 breaking changes (#38376) * Fix type errors * Fix session handling * Update getSession usages commit cdf73f2ceb181649ed4b01d0cc075520049d2a74 Merge: d5c054b94 4caba8bfd Author: Dries Vints <dries@vints.io> Date: Mon Aug 16 16:49:33 2021 +0200 Merge branch '8.x' commit d5c054b940999c24ee403d6daf62e1497704b855 Merge: 128614b9b f95f3afc7 Author: Dries Vints <dries@vints.io> Date: Mon Aug 16 14:10:59 2021 +0200 Merge branch '8.x' commit 128614b9bb952ad680987117f1e40c2de3230bec Merge: 2c3c533be 8cbdf8fa6 Author: Graham Campbell <hello@gjcampbell.co.uk> Date: Sat Aug 14 17:49:24 2021 +0100 Merge branch '8.x' commit 2c3c533be508fff3f3b573be395ef9cef80a0520 Merge: 34771cbf9 3591526d8 Author: Dries Vints <dries@vints.io> Date: Fri Aug 13 18:27:22 2021 +0200 Merge branch '8.x' commit 34771cbf9324ac1b10ad91ce82422a7a22341a14 Author: Mark Beech <mbeech@mark-beech.co.uk> Date: Fri Aug 13 14:16:21 2021 +0100 BelongsToMany firstOrCreate and firstOrNew should merge attributes correctly (#38367) commit 8defbc6564649d1f2f11ec10a1a88c12f832d8d3 Author: Choraimy Kroonstuiver <3661474+axlon@users.noreply.github.com> Date: Thu Aug 12 19:12:34 2021 +0200 Make BuildsQueries::tap consistent with other versions of tap (#38359) commit 94c1b8a72250b07d4a16233f545f1ec8bc195f9a Author: Dries Vints <dries@vints.io> Date: Thu Aug 12 15:05:18 2021 +0200 Fix incorrect type commit 3a8888ccc5e3cd396f7ab4e19e54df5f3a337f27 Merge: 0ec3e78e8 b0eca3869 Author: Dries Vints <dries@vints.io> Date: Thu Aug 12 14:53:40 2021 +0200 Merge branch '8.x' # Conflicts: # composer.json # src/Illuminate/Foundation/Application.php # src/Illuminate/Mail/composer.json # src/Illuminate/Queue/composer.json commit 0ec3e78e85d44da1c6784f403dc1d8db0e4604f2 Author: Michael Dyrynda <michael@dyrynda.com.au> Date: Tue Aug 10 23:43:43 2021 +0930 [9.x] Use CarbonImmutable by default (#38258) * Ensure that Illuminate\Support\Carbon is used consistently across the framework * Update tests to support immutable dates by default * Update date calls to support immutable-first behaviour * cs fixes * Per PR review, revert to using Carbon by default commit 13e4a7ff1799ee51698faa10161b2d2af889b713 Author: Luke Towers <github@luketowers.ca> Date: Mon Aug 9 07:46:19 2021 -0600 [9.x] Manually populate POST request body with JSON data only when required (#37921) * Manually populate POST request body with JSON data only when required This fixes a 6 year old bug introduced in #7026 where GET requests would have GET data populated in the POST body property leading to issues around Request::post() and $request->getParsedBody()…
Sorry @taylorotwell -- I previously changed the PR base from 8.x to 9.x by simply selecting it in GitHub. I've just now rebased this PR branch to 9.x. Can you give it another shot? |
That messed it up further. Can you undo that? It was actually fine before. |
Whoops -- okay I messed this PR up moving from branch to branch. Going to close this and re push this from scratch, my bad! 😅 |
Description
This PR introduces the ability to generate unique validation rules per nested array element, granting you direct access to each value supplied the request, the attribute name, and the whole data set in case other attribute values are needed.
This will be done using a new
Rule
static method:Rule::nested($callback)
.Purpose
Generation of unique validation rules in nested arrays is currently pretty difficult, especially if you use any sort of custom validation rules. There is no built in way to generate validation rules taking into account the current iteration's value, and you'll have to set the indexes and such manually inside of a
$rules
array prior to sending it to the validator.This also becomes quite problematic because we need to trust the data structure that was sent to us in the request and then iterate over it to dynamically generate our rules prior to actual validation taking place.
Example
Before:
After:
Another example where this is extremely handy is the validation of complex nested relationships:
You may also supply an array of rules as you would normally with
nested
instances, as well as supply multiplenested
instances:Validation of arrays is super tricky stuff. I think this greatly simplifies the developer experience, allowing us not to think too much about its complexities.
Please let me know if you have any questions/comments/concerns. Thanks so much for your time! ❤️