URL: http://localhost/?v=
код:
Route::get('/', ['as' => 'home', function()
{
dd(Request::has('v'));
}]);
Выход: false
Что происходит? Является ли это ошибкой или я что-то делаю неправильно?
URL: http://localhost/?v=
код:
Route::get('/', ['as' => 'home', function()
{
dd(Request::has('v'));
}]);
Выход: false
Что происходит? Является ли это ошибкой или я что-то делаю неправильно?
Request::has()
проверяет, действительно ли элемент установлен. Пустая строка не учитывается здесь.
Вместо этого вы ищете: Request::exists()
!
Route::get('/', ['as' => 'home', function()
{
dd(Request::exists('v'));
}]);
Обновление до Laravel 5.5 или выше. Они изменили это, так что теперь он работает так, как вы ожидали.
В руководстве по обновлению Laravel 5.5, мы читаем следующее:
Метод
has
Теперь метод
$request->has
возвращаетtrue
, даже если входное значение является пустой строкой илиnull
. Добавлен новый метод$request->filled
, который обеспечивает предыдущее поведение методаhas
.
Метод $request->exists
все еще работает, это просто псевдоним для $request->has
.
$request->exists
: Определите, содержит ли запрос данный ключ элемента ввода.$request->has
: Определите, содержит ли запрос непустое значение для элемента ввода.$request->exists
: Псевдоним для $request->has
$request->has
: Определите, содержит ли запрос данный ключ элемента ввода.$request->filled
: определить, содержит ли запрос непустое значение для элемента ввода.Если вы нажмете на приведенные выше команды, вы можете проверить исходный код и увидеть, что они буквально просто переименовали exists
в has
, has
в filled
, затем с псевдонимом exists
на has
.
Как мне это не ошибка, но функция:) В вашем примере v
предоставляется, но он пуст.
В код рамки вы найдете следующее:
if ($this->isEmptyString($value)) return false;
Итак, если указана пустая строка has()
, метод вернет false
. Это имеет смысл для меня, в большинстве случаев я хочу этого поведения.