التحقق من صحة التواريخ بطريقة سلسة في لارافل ١١.٤٠
تم إصدار نسخة Laravel 11.40، والتي تتضمن class للتحقق من صحة التواريخ بطريقة سلسة، وسمات Eloquent معلقة، ومساعدات dump لمعالجة مثيلات استجابات HTTP، والمزيد.
التحقق من صحة التواريخ بطريقة سلسة
ساهم Michael Nabil بقاعدة تحقق جديدة قابلة للتخصيص من نوع `Date` في طلب السحب #53465:توفر قاعدة `Date` قيمًا افتراضية للتحقق من صحة التواريخ الأساسية، بالإضافة إلى أساليب لإنشاء احتياجات للتحقق من صحة التواريخ المعقدة، مثل تحديد تاريخ انتهاء يتم مقارنته بتاريخ بداية، والعديد من الاحتمالات الأخرى:تسهل قاعدة `Date` التحقق من صحة التواريخ من خلال توفير أساليب متسلسلة تسمح بمتطلبات تواريخ معقدة مباشرة داخل تعريف القاعدة. يتضمن هذا التحسين أساليب لتحديد تنسيقات التواريخ، و التحقق أن التواريخ قبل أو بعد تواريخ محددة (بما في ذلك "اليوم")، وكذلك التحقق أن التواريخ في أو قبل/بعد قيود محددة.
use Illuminate\Validation\Rules\Date; public function rules(){ return [ 'start_date' => [ 'required', new Date, // Defaults to validating the date ], 'end_date' => [ 'required', (new Date)->after('start_date')->before('2025-01-01'), // Ensures end date is after start_date and before 2025-01-01 ], 'birth_date' => [ 'required', (new Date)->format('d/m/Y')->beforeToday(), // Validates birth_date is before today in 'd/m/Y' format ], ];}
الأساليب المتاحة:
* `format($format)`: يحدد تنسيق التاريخ للتحقق من صحته. القيمة الافتراضية هي 'Y-m-d' إذا لم يتم تحديدها.
* `afterToday()`: يضمن أن التاريخ بعد تاريخ اليوم.
* `beforeToday()`: يضمن أن التاريخ قبل تاريخ اليوم.
* `after($date)`: يضمن أن التاريخ بعد التاريخ المحدد.
* `afterOrEqual($date)`: يضمن أن التاريخ في أو بعد التاريخ المحدد.
* `before($date)`: يضمن أن التاريخ قبل التاريخ المحدد.
* `beforeOrEqual($date)`: يضمن أن التاريخ في أو قبل التاريخ المحدد.
* `between($from, $to)`: يضمن أن التاريخ بين تاريخين.
* `betweenOrEqual($from, $to)`: يضمن أن التاريخ بين تاريخين أو يساويهما. ملاحظة: في وقت كتابة هذه السطور، هناك إصلاح لم يتم وسمه/إصداره بعد يتعلق بهذه الميزة. نظرًا لأنه ميزة جديدة، فإنه لا يكسر التطبيقات الموجودة، ومن المأمول أن يتم حله قريبًا.
مساعدات Dump لعميل HTTP في Laravel
ساهم Craig Morris بأساليب مساعدة جديدة للـ object الذي تم إرجاعه بواسطة HTTP. تتطابق هذه التوقيعات مع فئة `TestResponse` إذا كنت معتادًا على استخدامها:Http::get($url)->dump($key = null);Http::get($url)->dd($key = null);Http::get($url)->dumpHeaders();Http::get($url)->ddHeaders();
السمات المعلقة
ساهم @tontonsb بإضافة السمات المعلقة في Eloquent، باستخدام طريقة `withAttributes()`:إنشاء `->withAttributes(['key' => 'value'])` سيوجه مثيل Builder إلى إضافة السمات المحددة إلى مثيلات النموذج الجديدة إذا قمت بإنشاء نموذج واستخدمتها كشروط `where` إذا انتهى بك الأمر بالقيام بتحديد.
// in the relationship on the User modelpublic function hiddenPosts(): HasMany{ return $this->posts()->withAttributes('hidden', 'y');} // in the scope on the Post modelpublic function scopeHidden(Builder $posts){ $posts->withAttributes('hidden', 'y');}
ملاحظات الإصدار
يمكنك الاطلاع على القائمة الكاملة للميزات والتحديثات الجديدة أدناه والفرق بين 11.39.0 و 11.40.0 على GitHub. ملاحظات الإصدار التالية مأخوذة مباشرة من سجل التغييرات:v11.40.0
- draft: fix: Don't release lock for ShouldBeUniqueUntilProcessing Job that gets released by @mathiasgrimm in https://github.com/laravel/framework/pull/54261
- [11.x] Add Laravel Pint by @browner12 in https://github.com/laravel/framework/pull/53835
- Add self to HasCollection type param in Model by @thena-seer-sfg in https://github.com/laravel/framework/pull/54311
- [11.x] Add pending attributes by @tontonsb in https://github.com/laravel/framework/pull/53720
- fix:
schedule:test
on commands using runInBackground by @dallyger in https://github.com/laravel/framework/pull/54321 - [11.x] Helper methods to dump responses of the Laravel HTTP client by @morrislaptop in https://github.com/laravel/framework/pull/54317
- Add support for cursor editor in ResolvesDumpSource by @tuxfamily in https://github.com/laravel/framework/pull/54318
- [11.x] Add Customizable Date Validation Rule with Flexible Date Constraints by @michaelnabil230 in https://github.com/laravel/framework/pull/53465
- [11.x] start syncing StyleCI rules to Pint by @browner12 in https://github.com/laravel/framework/pull/54326
- [11.x] apply our new Pint rule to the
/tests
directory by @browner12 in https://github.com/laravel/framework/pull/54325 - fix(Collection::pop()): count < 1 by @artumi-richard in https://github.com/laravel/framework/pull/54340
- Patch CVE-2025-22145 in nesbot/carbon package by @dennis-koster in https://github.com/laravel/framework/pull/54335
- [11.x] Prevent unintended serialization and compression by @JeppeKnockaert in https://github.com/laravel/framework/pull/54337
- [11.x] Pass collection of models to
whereMorphedTo
/whereNotMorphedTo
by @gdebrauwer in https://github.com/laravel/framework/pull/54324