Правило present
Правило present применяется при валидации данных
и проверяет, присутствует ли указанное поле в массиве
входных данных. При этом неважно, какое значение имеет поле -
пустая строка, null, 0 или любое другое
значение. Правило вернёт ошибку только в том случае,
если поле отсутствует в запросе.
Синтаксис
<?php
'field' => 'present'
?>
Пример
Давайте проверим, что поле 'name' присутствует
в запросе:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function store(Request $request)
{
$validated = $request->validate([
'name' => 'present'
]);
return response()->json(['message' => 'Validation passed']);
}
}
?>
При отправке запроса с полем 'name' валидация
будет пройдена:
POST /users
{
"name": ""
}
Результат выполнения кода:
{"message": "Validation passed"}
Пример
Правило present часто используется вместе с
другими правилами для проверки значений полей, которые
обязательно должны присутствовать в запросе:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function update(Request $request)
{
$validated = $request->validate([
'title' => 'present|string|max:255',
'content' => 'present|string'
]);
return response()->json(['message' => 'Article updated']);
}
}
?>
Если поле 'content' будет отсутствовать в запросе:
POST /articles
{
"title": "New article"
}
Результат выполнения кода:
{"message": "The content field is required."}
Пример
Рассмотрим разницу между present и required.
Правило present проверяет только наличие ключа,
а required проверяет наличие ключа и то, что его
значение не пустое:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProfileController extends Controller
{
public function update(Request $request)
{
$validated = $request->validate([
'email' => 'present|email',
'phone' => 'required|string'
]);
return response()->json(['message' => 'Profile updated']);
}
}
?>
При отправке запроса с полем 'email', имеющим пустое
значение:
POST /profile
{
"email": "",
"phone": "123-456-789"
}
Результат выполнения кода:
{"message": "The email field must be a valid email address."}