10

我最近发现我的问题是什么导致了我的表单错误。

我创建了一个表单帖子并循环它们

public function update()
    {

        $input = Input::all();

        foreach ($input as $key => $value) {

            $update = Setting::find($key);
            $update->value = $value;
            $update->save();
        }

        return Redirect::back();
    }

问题是我收到以下错误

Creating default object from empty value

因为令牌包含在表单中,所以 Laravel 会自动呈现给表单

如果我停止使用 Laravel 表单打开并使用 html 表单标签,一切正常。

有什么方法可以通过打开 laravel 表单绕过这个问题,还是应该使用 html 表单标签?

4

2 回答 2

25

改变

 $input = Input::all();

 $input = Input::except('_token');
于 2013-11-03T12:05:19.457 回答
1

确保您返回一个有效的对象,因为当为 NULL 或未定义并且您尝试在代码中使用它$update = Setting::find($key);时应该触发该错误$update

$update->value = $value;

Creating default object from empty valueE_STRICT在系统中打开时会出现此警告,但这不是真正的问题,相反,您没有得到想要的结果,很可能Setting::find($key)没有得到您要求的东西并创建一个新Setting对象,检查您的模型并确保您传递了正确的值::find($key),键应该是primary键。

更新: 还记得,当你使用

$input = Input::all();
foreach ($input as $key => $value) { ... }

在这种情况下,$key将是您input/field在表单中使用的名称,它可能包含隐藏_token字段,但_token可能在数据库中不可用field/column。所以,你可以尝试得到除了_token

$input = Input::except('_token'); // get everything without _token

获得没有_token字段的所有内容(但不确定这是否解决了问题)。

于 2013-11-03T10:27:21.227 回答