将两个不同的数组值传递给控制器​​,以便使用Laravel将它们分离

时间:2016-07-21 12:06:27

标签: laravel controller parameter-passing

我想从我的数据库中分离一些数据。我的视图中有一个表格,其中显示了一些带复选框的数据。每个标签都有自己的复选框。我想从我检查过的标签中传递所有tag_id。要分离它们,我还需要domain_id。我已经尝试了一些事情,但无法弄清楚如何通过tag_id标记我的所有domain_id。

<tbody>
    {!! Form::open(['action' => 'DomainController@detach', 'method' => 'post']) !!}    
               @foreach($domains as $domain)
                    <tr>
                        <td>{{ $domain->name }}</td>
                        <td>{{ $domain->tld }}</td>
                        <td id="hello">
                            @foreach($domain->tags as $tag)
                                {{ $tag->name }},<br>
                            @endforeach
                        </td>
                        <td>
                            <input name="domain_id[]" type="hidden" value="{{ $domain->id }}">
                            @foreach($domain->tags as $tag)
                                <input type="checkbox" name="tag_id[]" value="{{$tag->id}}"><br>
                            @endforeach
                        </td>
                    </tr>
                @endforeach
</tbody>


<div class="btn-group">
        <button type="button" dropdown-toggle" data-toggle="dropdown" >Action<span class="caret"></span></button>
        <ul class="dropdown-menu" role="menu">
            <li><a>
                    <button>Send</button>
            </a></li>
        </ul>
    </div>
    {!! Form::close() !!}

现在我想得到每个tag_id和标签的domain_id,如果我用勾号标记它们。

作为输出,我需要这样的东西:

[0] = "domain_id" : 5,
      "tag_id" : [0] => 1,
                 [1] => 2,
                 [2] => 3,
[1] = "domain_id" : 6,
      "tag_id" : [0] => 10,
                 [1] => 11,
                 [2] => 12,

目前..这就是我得到的

 {"domain_id":["5","6","10","13","15","18","19","22","23","24","28"],"tag_id":["273","286","285"]}

我只是在ID为5的域中标记了标记,但它给了我所有的domain_id&#39; s并且我无法弄明白为什么......

1 个答案:

答案 0 :(得分:0)

表单不会以您想要的方式输出值,因为它无法生成子数组,因此如我的评论所述,您必须即兴创作。您的底线是,您需要以某种方式将domain_id与每个tag_id相关联,以便您可以对其进行数据库或其他任何操作。

我建议您在视图中创建标签复选框

<td>
    @foreach($domain->tags as $tag)
         <input type="checkbox" name="tag_id[]" value="{{$domain->id}}:{{$tag->id}}"><br>
    @endforeach
</td>

提交时,它应格式化请求对象中的tag_id,如此

[0] = "tag_id" : [0] => 5:1,
                 [1] => 5:2,
                 [2] => 5:3,
                 [3] => 6:10,
                 [4] => 6:11,
                 [5] => 6:12,

现在你可以循环遍历tag_id数组并将domain_id和tag_id字段分开来做你需要做的事情(你的例子没有说出你想用它们做什么)

foreach ($request->tag_id as $item) {
    $arrItem = explode(':', $item);
    // $arrItem[0] is your domain_id for the tag_id $arrItem[1]
    // other logic here 
}