Спростіть відображення вимог до паролів за допомогою методу appliedRules() у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 06 травня, 2025
Laravel тепер пропонує метод appliedRules() для зручного створення індикаторів вимог до паролів, що значно покращує користувацький досвід. Дізнайтеся, як цей метод усуває надмірність у коді та допомагає створювати динамічні списки вимог до паролів

Laravel представив метод appliedRules() для конструктора валідації паролів. Це спрощує створення індикаторів вимог до паролів, адже дозволяє безпосередньо отримувати доступ до правил валідації для відображення у ваших шаблонах

Коли ви розробляєте форми реєстрації чи відновлення пароля, чітке доведення вимог до пароля значно покращує досвід користувачів. Раніше розробникам доводилося підтримувати ці вимоги окремо в правилах валідації та у вигляді. Новий метод appliedRules() усуває цю надмірність, надаючи прямий доступ до всіх активних правил паролів:

// У вашому контролері
return view('auth.register', [
    'appliedRules' => Password::default()->appliedRules(),
]);

Метод повертає масив, що містить усі доступні правила паролів та їхній поточний статус (true, якщо застосовано, false або конкретне значення — якщо ні)

Цей підхід особливо корисний для створення динамічних списків вимог до паролів, які автоматично синхронізуються з логікою валідації:

// У AppServiceProvider або в іншому сервісному провайдері
Password::defaults(function () {
    return Password::min(10)
        ->letters()
        ->mixedCase()
        ->numbers();
});

// У вашому контролері
class AccountController extends Controller
{
    public function showPasswordForm()
    {
        return view('account.password', [
            'appliedRules' => Password::default()->appliedRules(),
        ]);
    }
}

У вашому шаблоні Blade ви можете динамічно відображати ці вимоги:

<div class="password-requirements">
    <h4>Ваш пароль має відповідати таким вимогам:</h4>
    <ul>
        <li class="{{ $appliedRules['min'] ? 'requirement-active' : 'requirement-inactive' }}">
            Містить не менше {{ $appliedRules['min'] }} символів
        </li>

        @if ($appliedRules['letters'])
            <li>Включає літери</li>
        @endif

        @if ($appliedRules['mixedCase'])
            <li>Містить великі та малі літери</li>
        @endif

        @if ($appliedRules['numbers'])
            <li>Включає щонайменше одну цифру</li>
        @endif

        @if ($appliedRules['symbols'])
            <li>Містить хоча б один спеціальний символ</li>
        @endif
    </ul>
</div>

Метод appliedRules() створює більш узгоджений користувацький досвід, адже елементи інтерфейсу точно відображають актуальні вимоги до валідації, що зменшує розчарування користувачів та запити до служби підтримки, пов'язані зі створенням паролів