2013-06-24 2 views
2

나는 사용자가 송장을 추가/편집 할 수 있어야하는 젠드 프레임 워크 2 프로젝트에서 작업하고 있습니다. 송장은 고객 정보 (예 : 이름, 주소) 및 하나 이상의 송장 행으로 구성됩니다. 이를 위해 두 개의 Doctrine 2 엔티티 인 InvoiceInvoiceLine을 사용하고 있습니다. 송장에는 모든 라인이있는 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

답변

2

3

관계 일대일이 문서 양식에서 봐. 처음에는 Zend의 ObjectProperty 하이드 레이터를 사용했습니다. Doctrine의 DoctrineObject hydrator로 변경하면 문제가 해결됩니다. 나는 모든 속성에 대해 getters와 setter를 만들고 모든 hydrators를 DoctrineObject로 변경했으며 현재는 모든 것이 잘 작동합니다.

+0

ZF2에서 작업하는 동안이 특별한 질문에 도움이되지는 않았지만 귀하의 링크에 감사드립니다. –

관련 문제