Laravel 4 beta3和beta4之间对Input :: json()函数的更改

时间:2013-04-04 20:08:49

标签: laravel laravel-4

当我在Laravel4 Beta3中开发时,我曾经使用Input :: json()函数从服务获取JSON POST数据,但是当我更新到Laravel4 Beta4时,我收到以下错误:

注意:未定义的属性:/Applications/MAMP/htdocs/commonDBAPI/app/controllers/UserController.php第47行中的Symfony \ Component \ HttpFoundation \ ParameterBag :: $ productName

有没有人知道,可能是什么原因。

谢谢,

3 个答案:

答案 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'];