Это не так очевидно, почему это так, потому что это кажется довольно странным на первый взгляд. Однако, если вы знаете немного больше о Laravel и посмотрите на файл app/Http/Kernel.php
, вы увидите там:
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
, который, как вы можете узнать из имени, преобразует пустые строки в ноль. Так что в вашем случае, когда вы отправляете пустой параметр, он считается null
, поэтому !isset($null)
будет истинным.
Итак, у вас есть 2 варианта:
- удалить это промежуточное ПО из массива - однако это повлияет на все приложение, поэтому, возможно, это не лучший способ, если вы не уверены в этом
Предполагается, что вы хотите запустить эту проверку только в том случае, если параметр вообще не отправляется вместо
if (!isset($request->security_token))
Вы можете использовать, например,
if (!$request->has('security_token'))
Очевидно, что это не совсем то же самое - если вы сейчас отправили этот токен и установили его на null
, он не будет по-прежнему выполняться, но я верю, что когда вы теперь знаете, что происходит с этой пустой строкой, вы можете теперь настроить его точно так, чтобы ваши потребности.