首页 > 解决方案 > 在 Laravel 5.1 控制器中的 Create 方法上从多个输入值编码和传递 JSON 对象

问题描述

form我有文章控制器和视图,用于在 Laravel中填充创建一个。

在创建时,form我有一篇文章,它是主题和描述等必填数据的基础,以及可选字段的部分。部件由javascript代码生成,它们仅包含可选字段。

目前输入字段类型设置为多个,因此controller它们返回值,例如

"sub_header":["optional 1","optional 2"],
"text_field":["optional 1","optional 2"]

这些值是arrays,但我想将它们嵌套在ArrayasJSON-objects中,以使控制器逻辑更易于理解。

我没有找到JSON-object在提交中嵌套许多输入字段的方法。我知道这可以通过Ajax电话来完成,但我宁愿只提交一次表单。

所以目标是以如下格式将数据从视图传递到控制器:

{
"topic":"Test Topic", "description":"Give a short description of the 
Article.",
"media_description":"Give a short description of media element.",
  "parts":[
    "part-1":{
    "sub_header":"optional 1",
    "text_field":"optional 1"
    },
    "part-2":{
    "sub_header":"optional 2",
    "text_field":"optional 2"
    }
  ],
"published":"1"
}

标签: javascriptjsonlaravelviewcontroller

解决方案


好吧,我想通了。

毕竟不是那么难......似乎这比 Laravel / Blade 问题更多的是 HTML / Javascript。很抱歉误导了关键字。

所以我改变的只是在 JavaScript 中生成输入时的 input.name :

input.name = "parts[part-" + taskRunningNumber + "][sub_header]";

结果一切都很好。

现在传递给控制器​​的值如下:

{
"topic":"mandatory 1",
"description":"mandatory 1",
"media_description":"mandatory 1",
"parts":{
  "part-1":{
    "sub_header":"optional 1",
    "text_field":"optional 1",
    "media":null
    },
  "part-2":{
    "sub_header":"optional 2",
    "text_field":"optional 2",
    "media":null
    }
  },
"published":"1"
}

即使任务不是一个数组,我认为我可以用它来管理。


推荐阅读