1

我已经阅读并使用了其他关于此的帖子,看来我刚刚下载的 Laravel 4 版本对控制器处理 JSON 输入的方式进行了更多更改。

$input = Input::json()->all();给我错误,好像我在执行 PUT 请求后请求有效负载的某些部分时指的是不存在的东西。没有->all();我得到一个 symfony 错误。有谁知道如何在 Laravel 4 的最新版本中从主干中获取好的 JSON?

目前,我正在做很长的路要走来获取我的数据,即:

    $input_title = Input::get('title');
        $input_completed = Input::get('completed');

        $task = Task::find($id);
        $task->title = $input_title;
        $task->completed = $input_completed;
        $task->save();

是的,我正在做关于 tutsplus 的教程来学习 laravel/backbone,所以有点菜鸟的耐心是值得赞赏的。

我使用时得到的错误Input::get();是: {"error":{"type":"UnexpectedValueException","message":"响应内容必须是实现 __toString(), \"array\" given.", “文件”:“/Users/brentlawson23/Sites/laravel4App/bootstrap/compiled.php”,“行”:16858}}

我真的很想得到 Laravel 特定的答案,而不是使用直接的 php 来对有效负载进行字符串化。

我只使用了同样的错误Input::json();

对于当前的 Laravel 4 测试版,Input::json(); 没有获得可用于在表中创建新行的请求有效负载的字符串化版本, Input::json()->all(); 也没有 (希望与 symfony 的 ParameterBag 配合得很好)。我在其他黑客中尝试过 json_encode ,基本上在这个 tut 中的每一步,我都碰到了一些砖墙。有人根据我在这里提出的建议有什么建议吗?

今天我只是试图回显以下结果时得到了这个$input = Input::json();: {"error":{"type":"ErrorException","message":"Catchable Fatal Error: Object of class Symfony\Component\HttpFoundation\ParameterBag 无法转换在 /Users/brentlawson23/Sites/laravel4App/app/controllers/TasksController.php 第 45 行","file":"/Users/brentlawson23/Sites/laravel4App/app/controllers/TasksController.php","line" 中的字符串: 45}}

是的,我研究过 Symfony API。

4

2 回答 2

1

我还在学习关于 tuts+ 的 Backbone 教程。如果我的假设是正确的,您是否停留在“创建新联系人”部分?下面是我在 ContactController.php 中如何让它为我工作:

public function store()
{
    $input = Input::all();
    Contact::create(array(
        'first_name' => $input['first_name'],
        'last_name' => $input['last_name'],
        'email_address' => $input['email_address'],
        'description' => $input['description']
    ));
}

然后还需要使用以下内容更新 app/models/Contact.php:

class Contact extends Eloquent {
    protected $fillable = array('first_name', 'last_name', 'email_address', 'description');

}

这应该让它为您工作并将联系人插入数据库。如果我读错了,请告诉我,我可以再看看。

干杯,

肖恩

于 2013-06-03T21:15:57.023 回答
1

我有一个类似的问题。来自Backbone的输入在Laravel中被转换为数组。在 tutsplus 上,Jeffrey Way 正在使用对象。所以我试图这样做(就像在教程中一样):

return $input->title // using object,but got an error.

如果我将该行更改为:

return $input["title"] // everything works fine with array.
于 2013-10-31T20:56:07.380 回答