2

ユーザーが請求書を追加/編集できる必要がある Zend Framework 2 プロジェクトに取り組んでいます。請求書は、いくつかの顧客情報 (名前、住所など) と 1 つ以上の請求書行で構成されます。このために、私は 2 つの Doctrine 2 エンティティを使用しています:InvoiceInvoiceLine. 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)
}

既存の請求書を編集したい場合、問題が発生し始めます。フォームに既存の請求書 (および行) を入力すると、すべて問題ないように見えます。すべてのフィールドとフィールドセットに値が入力されます。しかし、このフォームを投稿すると、すべてのフィールドセット (既存または新しい行) が検証されず、エンティティに正しい値が含まれていません。すべての行が欠落しています。

つまり、追加は問題なく機能しますが、請求書の編集は機能しません。

何か不足していますか、それともバグですか? 前もって感謝します!

4

2 に答える 2

3

この記事を見てください 一対一、一対多の関係を持つフォーム http://zf2cheatsheet.com/#form

于 2013-06-25T09:00:33.417 に答える