为了账号安全,请及时绑定邮箱和手机立即绑定

laravel post 表单中的对象映射

laravel post 表单中的对象映射

PHP
隔江千里 2021-10-15 10:33:45
您好,我不确定如何正确提问,但我面临的问题是将表单正文序列化为对象:我有表格:<form method="POST" action="{{ route('action') }}">  <table>    @foreach($items as $item)     <td>       <input name="name[]" value={{ $item->price }}>     </td>     <td>       <input name="price[]" value={{ $item->name }}>     </td>    @endforeach  <table></form>将数据发送给我:[    "name" =>  [        0 => "camera",        1 => "toy"    ],    "price" =>  [        0 => "120",        1 => "120"    ]]有没有一种正确的方法可以从这个字段创建一个合适的对象或数组,如下所示:[ "name" => "camera", "price" => "120" ],[ "name" => "120", "price" => "120" ]我知道我可以使用循环......但是有 Laravel 的方法吗?
查看完整描述

2 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

您可以重建您的表单,注意name属性:


<form method="POST" action="{{ route('action') }}">

  <table>

     <!-- btw, where's tr tag? -->

     <td>

       <input name="items[0][name]" value={{ $item->price }}>

     </td>

     <td>

       <input name="items[0][price]" value={{ $item->name }}>

     </td>

     <td>

       <input name="items[1][name]" value={{ $item->price }}>

     </td>

     <td>

       <input name="items[1][price]" value={{ $item->name }}>

     </td>

     <!-- etc -->

  <table>

</form>

通过这样的命名,您将拥有$_POST['items']所需结构的子数组。


注意属性中的显式索引name。类似的命名item[][name]将无法正常工作。


查看完整回答
反对 回复 2021-10-15
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

在渲染模板之前,您可以使用array_combine ( array $keys , array $values )处理数据:array


$items = [

    "name" =>  [

        0 => "camera",

        1 => "toy"

    ],

    "price" =>  [

        0 => "120",

        1 => "120"

    ]

];


$items = array_combine($data['name'], $data['price']);

渲染后,在模板中使用foreach()您可以在表中填充您的数据


<table>

    @foreach($items as $name => $price)

        <tr>

        <td>

           <input name="name[]" value={{ $name }}>

        </td>

        <td>

           <input name="price[]" value={{ $price }}>

        </td>

        </tr>

    @endforeach

<table>


查看完整回答
反对 回复 2021-10-15
  • 2 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信