에 실패한 많은 많은 질문이 제대로 ( example는, example, example ),이 질문은 그것에 대해 아닙니다 양식 제출 후 Laravel에서 체크 박스 필드를 유지하는 방법에 대해 여기에 SO에 있습니다.Laravel 체크 박스 상태는 후 확인
또한 과 그 it accepts a default value을 잘 알고 있습니다. 제 질문은 old()
이 체크 박스로 작동하지 않는 특별한 경우에 관한 것입니다.
DB에 이미있는 데이터를 업데이트하는 편집 폼 작업 중입니다. 양식은 처음에 DB의 값으로 채워집니다.
유효성 검사 실패 후 양식 입력을 다시 채우는 표준 방법은 old()
입니다. (양식을 제출하기 전에) 초기 페이지로드에이 작품을
<input type='text' name='unicorns' value='{{ old('unicorns', $model->unicorns) }}'>
: 항상 다음 작품 같은 것을 (텍스트 필드 등) 제출 된 값이 비어있는 경우에도 값을 반환 필드의 모든 종류의 old('unicorns')
은 null
이므로 기본값은 $model->unicorns
이며 텍스트 필드의 값은 DB 상태를 반영합니다.
유효성 검사에 실패한 새 값을 제출하면 old('unicorns')
은 새로운 값인 경우에도 새로운 값이되며, 원하는 경우 텍스트 필드의 값이 제출 된 상태를 반영합니다.
그러나 체크되지 않은 체크 박스가 요청에 전혀 표시되지 않는 경우 체크 박스가 분류됩니다. 다음을 고려하십시오.
<input type='checkbox' name='unicorns' value='1' @if old('unicorns', $model->unicorns) checked @endif>
초기 페이지로드시 텍스트 필드와 마찬가지로 정상적으로로드됩니다. 그러나 실패 검증 후 :
사례 1 :
0
(체크) DB 상태, 제출 된 상태 확인.old('unicorns')
은1
이므로 테스트 결과는true
이며 확인란이 선택되어 있는지 확인합니다.사례 2 : DB 상태
1
(선택), 제출 된 상태가 선택 취소되었습니다.old('unicorns')
이 null이므로old()
은 기본값$model->unicorns
(1
)으로 폴백되므로 테스트 결과는true
이며 확인란이 선택되어 있음 - FAIL!
어떻게 해결할 수 있습니까?
처음에는 유효성 검사 오류가 있었는지 테스트하는 것이 가장 좋은 방법이라고 생각합니다. 그렇다면 old()
값을 기본 폴백없이 사용하십시오. 그렇지 않은 경우 old()
에 기본 폴백을 사용합니다. 확인 실패를 테스트하는 한 가지 방법은 $errors
을 확인하는 것입니다.
$ 오류 변수가보기에 바인딩 ...
나는 이것에 대한 글로벌 도우미를 작성하고 싶습니다, 그리고 $errors
원 :이, 그것은 only works within a view AFAICT 작동하는 것 같다,하지만 거기서 일하지 마라.어쨌든,이 접근법은 ... clunky하고 너무 복잡합니다.
내가 누락 된 항목이 있습니까? 이 문제를 해결할 수있는 깔끔한 Laravel 방식이 있습니까? 이 특별한 경우에는 old()
이 작동하지 않는다는 것이 이상하게 보입니다.
이것은 새로운 문제는 아니며 다른 사람들이이를 어떻게 처리합니까?
지속 확인란 상태 때 실제로 간단한 삼항 연산자를 할
어떤 종류의 양식을 사용하고 있습니까? 편집 양식입니까 아니면 새로운 빈 양식입니까? –
@Shubhampokhriyal 편집 양식입니다. 나는이 질문을 명확하게 만들었다 고 생각했다. (기존 값인'$ model-> unicorns '이 믹스에 포함되어있다.) 나는 그것을 더 많이 만들도록 업데이트했다. –
@Shubhampokhriyal OK - 설명해 주시겠습니까? 유효성 검사 실패 후 새 상태로 체크 박스를 어떻게 다시 채울 수 있습니까? –