Користування елегантною валідацією дат у Laravel 11.40

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 29 січня, 2025
Огляд оновлень Laravel v11.40 вражає своїми новими можливостями, такими як гнучка валідація дат та нові допоміжні методи для HTTP-клієнта. Хочете дізнатися більше про те, як ці функції можуть спростити вашу роботу? Читайте далі

Команда 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'
        ],
    ];
}

Доступні методи

Зверніть увагу: на момент написання існує виправлення, яке ще не було випущено стосовно цієї функції. Оскільки це нова функція, вона не порушує існуючі додатки, і сподіваємось, буде вирішена найближчим часом.

Додаткову інформацію можна знайти у Pull Request #53465.

# Утиліти для Dump у HTTP Клієнті Laravel

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:

# v11.40.0