我有一個多對多的關係,並且正在構建一個表單來啓用更新。Laravel表單模型綁定覆蓋默認值
該關係使用一系列複選框進行設置。
該型號爲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[]
以外的內容,則會正確檢查它們。
爲什麼表單模型綁定檢查所有複選框,以及爲什麼,即使我嘗試通過將第三個參數傳遞給複選框來覆蓋它,是否沒有效果?
嗯,這是一個錯誤報告應張貼的東西?我可能會這樣做。 – harryg 2015-02-06 10:47:36
看起來回購是隻讀的 - 沒有辦法提交問題 – harryg 2015-02-06 10:54:56
但我仍然有點困惑,這是否真的如此。複選框的名稱應該與您是否要檢查它無關...... – silkfire 2015-02-06 10:56:52