나는 다 - 대 - 다 관계를 가지고 있으며이를 업데이트 할 수있는 폼을 작성 중입니다.Laravel Form Model 바인딩 기본값을 덮어 쓰는 것
관계는 일련의 확인란을 사용하여 설정됩니다.
모델은 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
선택된 카테고리가 다음과 같이 정의된다 : 단지 관련 카테고리의 ID의 간단한 배열을 제공
$selected_categories = $post->categories->lists('id');
을 ....
in_array($categoryId, $selected_categories))
문에도 불구하고 모든 범주 확인란이 기본적으로 선택되며 범주 ID가 관련 될 때만 true로 평가됩니다. 확인란의 첫 번째 (이름) 매개 변수를 category[]
이 아닌 다른 것으로 변경하면 해당 매개 변수가 올바르게 검사됩니다.
양식 모델 바인딩이 모든 확인란을 선택하는 이유는 무엇이며 왜 제 3 인수를 확인란에 전달해도 재정의해도 아무런 효과가 없습니까?
흠, 이것이 버그 보고서를 게시해야하는 것입니까? 나는 그렇게 할 수도있다. – harryg
Repo가 읽기 전용 인 것 같습니다. 문제를 제출할 방법이 없습니다. – harryg
하지만이 문제가 실제로 발생한 것인지에 대해서는 아직 조금 혼란 스럽습니다. 체크 박스의 이름은 당신이 체크하고 싶은지 아닌지와 아무런 관련이 없어야합니다 ... – silkfire