从POST表单到Laravel中的控制器的未定义索引

时间:2019-03-22 16:02:32

标签: php laravel

我有一个小问题让我有些沮丧。

在我要发布的请求中,我具有以下字段,其中包含多行:

<input type="text" name="invoiceables[{{$id}}][id]">
<input type="text" name="invoiceables[{{$id}}][amount]">
<input type="text" name="invoiceables[{{$id}}][notes]">

如果我提起异常,这就是它作为示例返回的样子:

invoiceables (array (2)):
-- 3127 (array(3):
---"id" => "3127"
---"amount" => "15.00"
---"notes" => "test1"

-- 3082 (array(3):
---"id" => "3082"
---"amount" => "25.00"
---"notes" => "test2"

但是当我在控制器中使用以下命令时,出现“未定义索引:金额”错误:

foreach($request->invoiceables['amount'] as $key => $val){
    $manifest = Carrier_Manifest::findOrFail($key);
    $manifest->invoices()->save($invoice,['amount'=>$request->invoiceables['amount'][$key],'notes'=>$request->invoiceables['notes'][$key]]);
    }

3 个答案:

答案 0 :(得分:2)

您的数据结构是:

$_POST['invoiceables']['SOME ID']['amount']

您将忽略'SOME ID'部分,并尝试直接从发票中读取金额。

您有多个发票,其中每个有金额。

答案 1 :(得分:2)

您错误地访问了阵列尺寸。在您的循环中,$ key成为ID,$ val是可发票数据的数组。试试这个:

foreach($request->invoiceables as $key => $val){
    $manifest = Carrier_Manifest::findOrFail($key);
    $manifest->invoices()->save($invoice,['amount'=>$val['amount'],'notes'=>$val['notes']]);
    }

答案 2 :(得分:1)

您排列其: $ invoiceables [id] [amount]

,但是您可以像这样访问它: $ invoiceables [amount] [id]