使用表单编码的点路径属性创建对象

Create object with form-encoded dot-path properties

在 laravel/dingo 中,您可以通过将数据发布为 application/x-www-form-urlencodedapplication/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

:)