【发布时间】:2015-04-06 00:59:11
【问题描述】:
我有一个多对多关系,并且正在构建一个表单来启用更新。
使用一系列复选框设置关系。
模型为Post 和Category,并定义了传统的mtm 关系。
在我的编辑帖子表单中,我获得了一个类别列表,并将当前选择的类别急切地加载到我的帖子模型中。表单如下所示:
{!! Form::model($post, ['route' => ['admin.posts.update', $post->id], 'method' => 'PATCH']) !!}
// .. some fields
@foreach ($categoryList as $categoryId => $category)
<div class="checkbox">
<label>
{!! Form::checkbox('category[]', $categoryId, in_array($categoryId, $selected_categories)) !!} {{ $category }}
</label>
</div>
@endforeach
所选类别的定义如下:
$selected_categories = $post->categories->lists('id');
...它给出了一个简单的数组,仅包含相关类别的 id。
这会导致默认选中所有类别复选框,尽管 in_array($categoryId, $selected_categories)) 语句仅在类别 ID 相关时才会评估为 true。如果我将复选框的第一个(名称)参数更改为 category[] 以外的其他参数,则它们会被正确检查。
为什么表单模型绑定会检查所有复选框,为什么即使我尝试通过将第三个参数传递给复选框来覆盖它,它也没有效果?
【问题讨论】: