2015-06-17 2 views
0

Я пытаюсь определить, находится ли параметр в URL-адресе или нет. Я использую:Параметры Laravel GET, которые включают точки, не могут быть проверены

$request->has('key');

И это не было должным образом работает до сих пор, когда я должен проверить wethere меня openid.ns параметр в URL. Если я удалить . (точка) все работает, как ожидалось, но:

URL: myhost.dev/auth/login?openid.ns= http://google.bg/

А потом

dd($request->has('openid.ns');

false.

Если это что-то вроде этого:

URL: myhost.dev/auth/login?openidns= http://google.bg/

А потом

dd($request->has('openidns');

возвращает истинный ,

Что вызывает это странное поведение?

ответ

1

Чтобы определить, если значение openid.ns присутствует на запросе, вы можете сделать это:

$request->has('openid_ns') 
+0

Это не кажется, работает на Laravel v5.4.15 делать модульные тесты. Я проверил код и обнаружил, что когда он проверяет, массив все еще ['some.key' => 'value'], и он проверяет ключ «some_key». Предполагается, что «some.key» должен быть переведен в «some_key» для хранения в $ request где-то в промежуточном программном обеспечении? – DAB

1

Это потому, что . нотации используется при доступе массивов, as documented:

При работе на формах с входами массива, вы можете использовать «точку» нотацию для доступа Массивы:

$ входа = $ request-> вход ('products.0.name');