- Що таке перевірка масиву в Laravel?
- Базова перевірка масиву
- Перевірка елементів у масиві
- Перевірка масивів за допомогою ключів
- Обробка помилок перевірки
- Користувальницькі правила перевірки масивів
- Перевірка вкладених масивів
- Поради та найкращі практики
- Висновок
Валідація є важливою частиною будь-якої програми. Це гарантує, що дані, які обробляє ваша програма, є точними, надійними та безпечними. У Laravel процес перевірки є безперебійним, потужним і простим у впровадженні. Серед різноманітних функцій, які пропонує Laravel, перевірка масивів є однією з найкорисніших, але іноді неправильно зрозумілих функцій. У цьому посібнику ми детально зануримося в перевірку масивів Laravel і пояснимо її зручним для початківців способом.
Що таке перевірка масиву в Laravel?
Перевірка масивів у Laravel дозволяє перевіряти вхідні дані, які структуровані у вигляді масивів. Це особливо корисно при роботі з формами або API, які приймають кілька вхідних даних під одним іменем поля, наприклад:
- Список адрес електронної пошти.
- Колекція варіантів товарів.
- Набір завантажених файлів.
Наприклад, розглянемо сценарій, у якому потрібно перевірити кілька телефонних номерів, наданих користувачем як один вхід. Перевірка масиву Laravel робить це не тільки можливим, але й простим.
Базова перевірка
масиву Почнемо з простого прикладу. Припустімо, у вас є ім'я поля items[] форми, де користувачі можуть надіслати список елементів. Щоб перевірити цей вхід, ви можете вказати правило перевірки у вашому контролері таким чином:
use Illuminate\Http\Request;
public function store(Request $request)
{
$request->validate([
'items' => 'required|array',
]);
// Proceed with storing or processing the valid data.
}
Ось що це робить:
-
required: Ensures theitemsfield is present in the request. -
array: Ensures that the value ofitemsis indeed an array.
Перевірка елементів у масиві
Що робити, якщо ви хочете перевірити кожен елемент у масиві items ? Наприклад, ви хочете переконатися, що кожен елемент є рядком з максимальною довжиною 50 символів. Laravel дозволяє використовувати для цього точкову нотацію:
$request->validate([
'items' => 'required|array',
'items.*' => 'string|max:50',
]);
Пояснення:
-
items.*: націлений на кожен елемент масивуitems. -
string: гарантує, що кожен елемент є рядком. -
max:50: обмежує довжину кожного рядка до 50 символів.
Якщо користувач надішле невірний масив, Laravel поверне помилку перевірки із зазначенням проблемного елемента, наприклад items.2 must not exceed 50 characters.
Перевірка масивів за допомогою ключів
У деяких випадках ваші масиви можуть мати певні ключі, які потребують перевірки. Наприклад:
$request->validate([
'products' => 'required|array',
'products.*.name' => 'required|string',
'products.*.price' => 'required|numeric|min:0',
]);
Ось що відбувається:
-
products: гарантує, щоproductsполе є масивом. -
products.*.name: гарантує, що кожен продукт маєnameполе, яке є обов'язковим рядком. -
products.*.price: гарантує, що для кожного товару єpriceполе, яке є обов'язковим числом, більшим або рівним 0.
Приклад вхідних даних:
[
'products' => [
['name' => 'Laptop', 'price' => 1200],
['name' => 'Mouse', 'price' => 25]
]
]
Обробка помилок
валідації Коли перевірка не вдається, Laravel автоматично перенаправляє користувача назад на попередню сторінку з помилками перевірки. Ви можете відображати ці помилки у своїх шаблонах Blade за допомогою $errors змінної:
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Це забезпечує інтуїтивний спосіб інформувати користувачів про будь-які проблеми з їхнім введенням.
Користувальницькі правила валідації для масивів
Іноді вбудованих правил валідації недостатньо, і вам потрібно реалізувати кастомну логіку. Laravel спрощує це, дозволяючи вам визначати власні правила:
-
Створіть власне правило за допомогою
php artisanкоманди:php artisan make:rule ValidPhoneNumber -
Реалізуйте логіку в генерованому файлі правил:
namespace App\Rules; use Closure; use Illuminate\Contracts\Validation\ValidationRule; class ValidPhoneNumber implements ValidationRule { public function validate(string $attribute, mixed $value, Closure $fail): void { // Example: Check if the value matches a phone number pattern if(!preg_match('/^\+?[0-9]{10,15}$/', $value)) { $fail('Invalid phone number format.'); } } public function message() { return 'The :attribute must be a valid phone number.'; } } -
Застосуйте користувацьке правило у своїй перевірці:
use App\Rules\ValidPhoneNumber; $request->validate([ 'contacts.*.phone' => ['required', new ValidPhoneNumber()], ]);
Перевірка вкладених масивів
Ви можете перевіряти глибоко вкладені масиви за допомогою точкової нотації. Наприклад:
$request->validate([
'teams' => 'required|array',
'teams.*.members' => 'required|array',
'teams.*.members.*.name' => 'required|string',
'teams.*.members.*.role' => 'required|string',
]);
Приклад введення:
[
'teams' => [
[
'members' => [
['name' => 'Alice', 'role' => 'Developer'],
['name' => 'Bob', 'role' => 'Designer']
]
]
]
]
Поради та найкращі практики
- Plan Your Validation Rules: Think through your data structure and validation requirements before writing the rules.
-
Use Custom Messages: Customize error messages for better user experience.
$request->validate([ 'items.*' => 'string|max:50', ], [ 'items.*.max' => 'Each item must not exceed 50 characters.', ]); - Leverage Custom Rules: For complex scenarios, create reusable custom rules to keep your code clean.
- Test Your Validation: Always test different scenarios to ensure your validation works as expected.
Висновок
: Перевірка масивів Laravel є потужною функцією, яка спрощує роботу зі складними структурами даних. Розуміючи основи та вивчаючи передові варіанти використання, ви можете переконатися, що ваші програми ефективно обробляють перевірку даних і забезпечують кращу взаємодію з користувачем. Незалежно від того, чи працюєте ви з простими списками чи глибоко вкладеними масивами, інструменти перевірки Laravel допоможуть вам.