当我在Laravel4 Beta3中开发时,我曾经使用Input :: json()函数从服务获取JSON POST数据,但是当我更新到Laravel4 Beta4时,我收到以下错误:
注意:未定义的属性:/Applications/MAMP/htdocs/commonDBAPI/app/controllers/UserController.php第47行中的Symfony \ Component \ HttpFoundation \ ParameterBag :: $ productName
有没有人知道,可能是什么原因。
谢谢,
答案 0 :(得分:15)
您只能使用Input::json()->all()
访问JSON。
JSON输入也合并到Input::all()
(和Input::get('key', 'default')
)中,因此您可以使用相同的接口来获取查询字符串数据,表单数据和JSON有效负载。
该文档尚未反映所有更改,因为Laravel 4仍处于测试阶段且重点是使代码正确,文档将更新为公开发布做好准备。
JSON如何与Input :: all()合并?
考虑以下JSON:
{
'name': 'Phill Sparks',
'location': 'England',
'skills': [
'PHP',
'MySQL',
'Laravel'
],
'jobs': [
{
'org': 'Laravel',
'role': 'Quality Team',
'since': 2012
}
]
}
当合并到Laravel的输入时,JSON被解码,顶级键成为输入中的顶级键。例如:
Input::get('name'); // string
Input::get('skills'); // array
Input::get('jobs.0'); // object
Input::all(); // Full structure of JSON, plus other input
答案 1 :(得分:0)
是的,他们改变它以返回一个ParameterBag对象,将你的代码切换为Input :: json() - > all()
答案 2 :(得分:0)
对于: { “名”:“奥利弗”, “标题”:“试一试” }
试试这个:
$ input = Input :: json() - > all();
返回$ input ['name'];