ユーザーが請求書を追加/編集できる必要がある Zend Framework 2 プロジェクトに取り組んでいます。請求書は、いくつかの顧客情報 (名前、住所など) と 1 つ以上の請求書行で構成されます。このために、私は 2 つの Doctrine 2 エンティティを使用しています:Invoice
とInvoiceLine
. ArrayCollection
請求書には、そのすべての行を含む Doctrineが含まれています。
請求書用のフォームと行用のフィールドセットもあります。このフォームには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)
}
既存の請求書を編集したい場合、問題が発生し始めます。フォームに既存の請求書 (および行) を入力すると、すべて問題ないように見えます。すべてのフィールドとフィールドセットに値が入力されます。しかし、このフォームを投稿すると、すべてのフィールドセット (既存または新しい行) が検証されず、エンティティに正しい値が含まれていません。すべての行が欠落しています。
つまり、追加は問題なく機能しますが、請求書の編集は機能しません。
何か不足していますか、それともバグですか? 前もって感謝します!