在Zend 2 Forms中编辑相关内容

时间:2014-01-28 05:15:49

标签: doctrine-orm zend-framework2

我遇到了无法在“编辑”表单中保存相关内容的问题。添加似乎工作得很好,但两者都使用相同的Fieldset和查看文件

我似乎也可以从集合中删除元素,但添加它们似乎失败(帖子数据不包含数据)

我的观点文件:

Edit.phtml

Page Fieldset:

Pagefieldset.php

Block Fieldset:

Blockfieldset.php

从控制器添加/编辑:

Controller.php

奇怪的是,如果我将edit.phtml文件更改为仅将整个表单作为集合输出,那么新条目将添加到集合中

<?php
    $title = 'Edit Page';
    $this->headTitle($title);
?>
<h2><?php echo $this->escapeHtml($title); ?></h2>
<br>

<?php

    $page = $this->form->get('page');
    $form->setAttribute('action', $this->url(
        'admin/page',
        array(
            'action' => 'edit',
            'id'     => $this->id,
        )
    ));
    $this->form->prepare();
    // echo $this->formElement($this->form->get('csrf'));

    $this->form($this->form);

    echo $this->form()->openTag($this->form);
    echo $this->formCollection($this->form);

    echo $this->form()->closeTag();
?>

1 个答案:

答案 0 :(得分:0)

我的edit.phtml中的标记导致表单在添加集合之前关闭,这解释了为什么字段不在帖子数据中。

在放置<?php echo $this->form()->openTag($this->form); ?>

的位置时需要更加小心

问题的简化示例

<div>
    <?php echo $this->form()->openTag($this->form); ?>
    <?php echo $this->formCollection($page->get('blocks')); ?>
</div>
<?php echo $this->form()->closeTag(); ?>

这导致浏览器在div元素的早期添加一个关闭标记

正确输出

<?php echo $this->form()->openTag($this->form); ?>
<div>   
    <?php echo $this->formCollection($page->get('blocks')); ?>
</div>
<?php echo $this->form()->closeTag(); ?>