Метод has
Метод has применяется к объекту запроса Request
и проверяет, присутствуют ли указанные ключи во входных данных.
Метод принимает один или несколько ключей в виде строк или массива.
Возвращает true, если все ключи существуют и не равны null,
и false в противном случае.
Синтаксис
<?php
Request::has($key);
?>
Где $key - строка с именем ключа или массив ключей для проверки.
Пример
Давайте проверим наличие поля 'name' в запросе:
<?php
use Illuminate\Http\Request;
Route::get('/user', function (Request $request) {
if ($request->has('name')) {
echo "Field 'name' exists";
} else {
echo "Field 'name' does not exist";
}
});
?>
При запросе с параметром ?name=John результат будет:
"Field 'name' exists"
При запросе без параметра name результат будет:
"Field 'name' does not exist"
Пример
Давайте проверим наличие нескольких полей одновременно:
<?php
use Illuminate\Http\Request;
Route::post('/profile', function (Request $request) {
$fields = ['name', 'email', 'phone'];
if ($request->has($fields)) {
echo "All fields are present";
} else {
echo "Some fields are missing";
}
});
?>
Если все поля name, email и phone присутствуют в запросе,
результат будет:
"All fields are present"
Если хотя бы одно из полей отсутствует, результат будет:
"Some fields are missing"
Пример
Обратите внимание, что метод has возвращает false,
если поле существует, но имеет значение null:
<?php
use Illuminate\Http\Request;
Route::get('/test', function (Request $request) {
$res = $request->has('empty_field') ? 'exists' : 'does not exist';
echo "Field 'empty_field' " . $res;
});
?>
Если передан параметр ?empty_field=null, результат будет:
"Field 'empty_field' does not exist"
Пример
Метод has можно использовать в контроллере для проверки
наличия данных перед их обработкой:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function update(Request $request)
{
if ($request->has(['name', 'email'])) {
$name = $request->input('name');
$email = $request->input('email');
echo "Updating user with name: $name and email: $email";
} else {
echo "Required fields 'name' and 'email' are missing";
}
}
}
?>
Результат выполнения при корректных данных:
"Updating user with name: John and email: john@example.com"