使用表单编码的点路径属性创建对象
Create object with form-encoded dot-path properties
在 laravel/dingo 中,您可以通过将数据发布为 application/x-www-form-urlencoded
或 application/json
:
来创建新对象
$ curl -XPOST --data name=foo http://example.org/user
JSON:
$ curl -XPOST -H 'Content-type: application/json' --data '{"name":"foo"}' http://example.org/user
两者都很好。
我现在想做的是创建具有嵌套属性的对象,例如name.first
。这在 POSTing JSON:
时工作正常
$ curl -XPOST -H 'Content-type: application/json' --data '{"name":{"first:"foo"}}' http://example.org/user
但使用表单编码数据时失败:
$ curl -XPOST --data name.first=foo http://example.org/user
例外是The name.first field is required
。
我知道 PHP converts dots to underscores:
PHP will automatically replace any dots in incoming variable names with underscores.
这可能是 laravel 未将变量检测为嵌套的原因。
如何让 laravel 正确检测变量名中的点路径?
请使用
$ curl -XPOST --data name%5Bfirst%5D=foo http://example.org/user
等于name['first'] = foo
:)
在 laravel/dingo 中,您可以通过将数据发布为 application/x-www-form-urlencoded
或 application/json
:
$ curl -XPOST --data name=foo http://example.org/user
JSON:
$ curl -XPOST -H 'Content-type: application/json' --data '{"name":"foo"}' http://example.org/user
两者都很好。
我现在想做的是创建具有嵌套属性的对象,例如name.first
。这在 POSTing JSON:
$ curl -XPOST -H 'Content-type: application/json' --data '{"name":{"first:"foo"}}' http://example.org/user
但使用表单编码数据时失败:
$ curl -XPOST --data name.first=foo http://example.org/user
例外是The name.first field is required
。
我知道 PHP converts dots to underscores:
PHP will automatically replace any dots in incoming variable names with underscores.
这可能是 laravel 未将变量检测为嵌套的原因。
如何让 laravel 正确检测变量名中的点路径?
请使用
$ curl -XPOST --data name%5Bfirst%5D=foo http://example.org/user
等于name['first'] = foo
:)