プログラミング学習221日目〜Laravel 受発注アプリ作成 10日目〜

発注データを複数どうやってPOSTするかが問題なのですが、調べてみると使えそうな方法がありました。

<form method="POST" action="{{ route('order.store') }}" onSubmit="return checkSubmit()">
   @csrf
   <table class="table table-striped">
       <tr>
           <th>商品コード</th>
           <th>発注数</th>
       </tr>
       <tr>
           <td> <input type="text" name="100001[prod_code]" value="100001" readonly> </td>
           <td><input class="right" type="number" name="100001[qty]"></td>
       </tr>
       <tr>
           <td> <input type="text" name="100002[prod_code]" value="100002" readonly> </td>
                   <td><input class="right" type="number" name="100002[qty]"></td>
       </tr>
       <tr>
           <td> <input type="text" name="100003[prod_code]" value="100003" readonly> </td>
           <td><input class="right" type="number" name="100003[qty]"></td>
       </tr>
       <tr>
           <td> <input type="text" name="100004[prod_code]" value="100004" readonly> </td>
           <td><input class="right" type="number" name="100004[qty]"></td>
       </tr>
   </table>
   <button type="submit">送信</button>

nameをname="〇〇[△△△]"としてやることで連想配列でPOSTできるらしい。ddメソッドで見てみるとこんな感じ。

array:5 [▼
 "_token" => "PaHUvVCRNRPP1PRD89cr5bVTAdVkBT3gUAXyNjx3"
 100001 => array:2 [▼
   "prod_code" => "100001"
   "qty" => "1"
 ]
 100002 => array:2 [▼
   "prod_code" => "100002"
   "qty" => "2"
 ]
 100003 => array:2 [▼
   "prod_code" => "100003"
   "qty" => null
 ]
 100004 => array:2 [▼
   "prod_code" => "100004"
   "qty" => "4"
 ]
]

個別の配列で商品コードと数量が取得できています。
問題はnullの扱い。数量が入っているところのみデータベースに登録したいのでnullは無視したいところ。
continueが使えそうなので明日はこれを試してみることにしよう。






この記事が気に入ったらサポートをしてみませんか?