Zend Framework 2에서 필드 세트에 문제가 있습니다. 사용자가 양식을 통해 개인 데이터를 저장할 수 있습니다. 그가 이미 이것을 저장했다면 데이터베이스의 데이터로 미리 채워야합니다. 이는 형식 일 뿐이므로 문제가 없지만 필드 세트에 주소 데이터가 필요하므로 프로그램의 다른 부분에서 주소 데이터를 사용할 수 있습니다. 이제 입력 필드는 비어 있습니다.ZF2 : 필드 채우기 필드 집합 데이터
처음에는 개인 데이터를 세션에 채 웁니다. 내 데이터는 다음과 같습니다 : 당신이 볼 수 있듯이, 데이터가 이미 FIELDSET에 사용되는 지정의 주요 같은 개체, PersonalData 및 주소와 결합되어
object(Application\Model\Product\PersonalData)#247 (3) {
["tel":protected]=> string(0) ""
["birthday":protected]=> string(10) "2013-01-01"
["address":protected]=> object(Application\Model\Account\Addresses)#248 (15) {
["firstname":protected]=> string(5) "Ernie"
["surname":protected]=> string(6) "Muppet"
...
}
}
. 이것은 그 때 작동하는 것을 보인다. 는 그럼 난 내 양식에 넣어 모든 개체가 완벽하게 채워 지므로
$oForm->setData($oForm->getHydrator()->extract($_SESSION->getPersonalData()));
return new ViewModel(array('form'=>$oForm));
addressFieldset이 작업을 수행하는 하이드 레이터와 바인딩을 가지고 있습니다.
$addressFieldset = new AddressFieldset($lang);
$addressFieldset->setUseAsBaseFieldset(true);
$addressFieldset->setName('address');
$this->add($addressFieldset);
: 유일한 문제는 내가 페이지를 열 때, 입력 필드가 비어 만 생일 전화가 폼에 직접있는, 가득
내 양식이 같은 주소 필드 셋을 구현하는 것이있다
필드 세트의 올바른 주소 지정에 문제가있는 것 같지만 데이터를 게시 한 후 올바르게 채워지는 이유를 설명 할 수 없습니다. 원하는 것은 Fieldset의 setData를 채우는 것입니다.
내 질문을 이해하고 나를 도울 수 있기를 바랍니다.
고마워,
Svenja
편집 : 나는 조금 더 지금, 그것은 매우 이상하다 내가 무엇이 잘못 됐는지 모른다 분석했다. 디버깅 할 때 $ fieldset-> getValue()가 필요한 모든 데이터를 반환한다는 것을 알 수 있습니다. 그래서 바인딩이 잘못 될 수 있다는 생각 나는이는 단계적으로 디버깅 할 않았다
$values = $this->form->get('address')->getValue();
$addressFieldset = $this->form->get('address');
$aValues = $addressFieldset->getHydrator()->extract($values);
$addressFieldset->bindValues($aValues);
내가 Fieldset.php 및 bindValues에 갔다 (이해야한다 (어쨌든 단지 재현부 무엇인지 완벽합니까?)), hydrator를 호출하고 내 물건을 채우십시오. 그러나 요소에 표시하면 모든 값이 NULL입니다. 이미 내 요소를 두 번 확인했습니다. 모델과 요소 사이의 유일한 차이점은 다른 순서의 선언입니다. fieldset 및 양식에서도 setUseAsBaseField (true) 메서드를 호출합니다. 왜 데이터가 가치가 있지만 요소가 아닌지 이해할 수 없습니다.
예, 확신, (내 편집 참조) . 데이터는 바인딩되지만 요소에는 바인드되지 않습니다. 글쎄, 젠드 세션 (내부 이유)을 사용하지 않고 너무 많은 변수 이름과 혼동을 피하기 위해 "컨테이너"에 의한 세션을 줄입니다. 그러나 $ _SESSION도 훌륭하게 작동합니다;) – lokilein
이 6 점을 모두 확인했지만 여전히 작동하지 않습니다. 내가 "HydratorInterface"와 함께 내 자신의 수화기를 사용하고 이제 기본 ArraySerializable로 변경했지만 아무 것도 변경되지 않았습니다. 포인트 2 주셔서 감사합니다, 그것은이 기본 방법을 이해하는 데 많은 도움이되었지만 불행히도 제 문제를 해결하지 못했습니다. 나는 대학원생에게 이야기하고 이것은 문제 일 수 있습니다 : 이름에는 필드 세트 이름이 들어 있습니다. 아마 회사 이름을 찾고 있기 때문에 그는 이것을 채울 수 없을지도 모릅니다. – lokilein
http://zf2.readthedocs.org/en/latest/modules/zend.form.collections.html –