Команда Laravel представила версію v11.40, яка включає новий гнучкий клас валідації дат, очікувані атрибути Eloquent, утиліти для виводу в HTTP Response
об'єктах та інші вдосконалення.
Michael Nabil запропонував нове, налаштовуване правило валідації Date
у Pull Request #53465:
Правило Date спрощує валідацію дат, пропонуючи ланцюгові методи для визначення складних вимог безпосередньо у визначенні правила. Це вдосконалення включає методи для вказування формату дат, забезпечення того, що дати передують або настають після конкретних дат (включаючи "сьогодні"), а також перевірки на відповідність вказаним обмеженням.
Правило Date забезпечує стандартні налаштування для базової валідації дат, а також методи для створення складніших вимог, наприклад, визначення кінцевої дати, що порівнюється з початковою:
use Illuminate\Validation\Rules\Date;
public function rules()
{
return [
'start_date' => [
'required',
new Date, // Стандартна валідація дати
],
'end_date' => [
'required',
(new Date)->after('start_date')->before('2025-01-01'), // Кінцева дата повинна бути після початкової та до 2025-01-01
],
'birth_date' => [
'required',
(new Date)->format('d/m/Y')->beforeToday(), // Перевірка, чи дата народження передує сьогоднішній в форматі 'd/m/Y'
],
];
}
Доступні методи
format($format)
: Визначає формат дати для валідації. За замовчуванням використовується 'Y-m-d'.afterToday()
: Перевіряє, що дата після сьогоднішньої.beforeToday()
: Перевіряє, що дата передує сьогоднішній.after($date)
: Перевіряє, що дата після зазначеної.afterOrEqual($date)
: Перевіряє, що дата на або після зазначеної.before($date)
: Перевіряє, що дата передує зазначеній.beforeOrEqual($date)
: Перевіряє, що дата на або перед зазначеною.between($from, $to)
: Перевіряє, що дата в межах двох дат.betweenOrEqual($from, $to)
: Перевіряє, що дата в межах або дорівнює двом датам.Зверніть увагу: на момент написання існує виправлення, яке ще не було випущено стосовно цієї функції. Оскільки це нова функція, вона не порушує існуючі додатки, і сподіваємось, буде вирішена найближчим часом.
Додаткову інформацію можна знайти у Pull Request #53465.
Craig Morris додав нові утиліти для об'єкта Response, який повертає 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
при виборі.
// в реляції на моделі User
public function hiddenPosts(): HasMany
{
return $this->posts()->withAttributes('hidden', 'y');
}
// в скоупі на моделі Post
public function scopeHidden(Builder $posts)
{
$posts->withAttributes('hidden', 'y');
}
Деталі реалізації та обговорення цієї функції можна знайти у Pull Request #53720.
Повний список нових функцій та оновлень доступний нижче, а також зміни між 11.39.0 та 11.40.0 на GitHub. Примітки про версію взяті безпосередньо з change log:
schedule:test
для команд, які використовують runInBackground від @dallyger в https://github.com/laravel/framework/pull/54321/tests
від @browner12 в https://github.com/laravel/framework/pull/54325whereMorphedTo
/ whereNotMorphedTo
від @gdebrauwer в https://github.com/laravel/framework/pull/54324