나는 사용자가 송장을 추가/편집 할 수 있어야하는 젠드 프레임 워크 2 프로젝트에서 작업하고 있습니다. 송장은 고객 정보 (예 : 이름, 주소) 및 하나 이상의 송장 행으로 구성됩니다. 이를 위해 두 개의 Doctrine 2 엔티티 인 Invoice
과 InvoiceLine
을 사용하고 있습니다. 송장에는 모든 라인이있는 Doctrine ArrayCollection
이 들어 있습니다.ZF2 오브젝트 콜렉션 폼 컬렉션
나는 또한 인보이스에 대한 양식과 회선에 대한 필드 세트가 있습니다. 이 양식은 모든 라인에 대한 Form Collection
이 포함
$form->add(array(
'type' => 'Zend\Form\Element\Collection',
'name' => 'lines',
'options' => array(
'should_create_template' => true
)
));
$form->get('lines')->setTargetElement($this->createLineFieldset($form->get('lines')- >getTemplatePlaceholder()));
양식을 게시 한 후 나는 폼에 송장 법인을 구속 나는 양식을 확인합니다. 내가 잘못 가고 기존 송장 일을 시작 편집하려면
$form->bind($invoice);
$form->setData($request->getPost());
if ($form->isValid()) {
// Form is valid and invoice contains all information (including lines)
}
이 완벽하게 작동하는 새로운 (존재하지 않는) 청구서를 들어, 내 청구서는 모든 정보를 포함하는 라인이 포함되어 있습니다. 기존 청구서 (및 라인)로 서식을 채울 때 모든 것이 잘된 것처럼 보입니다. 모든 필드와 필드 세트에 값이 채워집니다. 그러나이 양식을 게시하면 모든 필드 세트 (기존 또는 새 행)가 유효성이 검사되지 않고 내 엔터티에 올바른 값이 포함되지 않습니다. 모든 행이 누락되었습니다.
요컨대, 추가 작업은 잘되지만 송장을 편집하는 것은 아닙니다.
내가 누락되었거나이 버그가 있습니까? 미리 감사드립니다! 나는 마침내 문제를 : 고정 일대 디버깅의 긴 시간 후 http://zf2cheatsheet.com/#form
ZF2에서 작업하는 동안이 특별한 질문에 도움이되지는 않았지만 귀하의 링크에 감사드립니다. –