我正在使用zend框架2开发一个webapp,我想设置一个表单,以便提供编辑某个实体的可能性。我一直在关注zend框架主页的教程,在那里我看到它实际上是如何工作的。我已经成功实现了一个控制器,表单,字段集和一个phtml页面。我的表单应该有两个按钮,第一个提交表单(保存),第二个按钮取消操作(取消)。它们现在都在表格内。 Save是提交类型的输入元素,另一个是按钮类型的按钮元素。正如您所看到的,我已将操作设置为按钮,但是当我点击它时没有任何反应(没有重定向)。有人可以告诉我在哪里犯了错误吗?
<?php
$form->prepare();
$sourceFieldSet = $form->get('source');
$title = $sourceFieldSet->get('title');
$title->setAttribute('class', 'form-control');
$title->setAttribute('placeholder', 'Geben Sie Ihrer Quelle einen möglichst aussagekräftigen Titel');
$title->setLabel('Titel der Quelle');
//....
$save = $form->get('submit');
$save->setAttribute('class','btn btn-primary');
?>
<div class="row">
<div class="col-md-12">
<div class="headingBlock">
<h1><?php echo $this->escapeHtml($this->title); ?></h1>
</div>
<div class="row mainPageBlock">
<div class="col-md-12">
<div class="centerForm">
<?php echo $this->form()->openTag($form); ?>
<?php echo $this->formHidden($sourceFieldSet->get('familyTreeId')->setValue($familyTreeId)); ?>
<div class='form-group'>
<?= $this->formRow($title); ?>
</div>
//other rows
//....
<div class='form-group'>
<?= $this->formRow($form->get('cancel')->setAttribute('action', $this->url('familyTreeMaintenance', array( 'action' => 'sources', 'id' => $familyTreeId, 'title' => 'Quellen' )))); ?>
<?= $this->formRow($save); ?>
</div>
<? echo $this->form()->closeTag(); ?>
</div>
</div>
</div>
</div>
也许你看看我的表格是什么样子以及如何在那里定义按钮也很有用。
<?php
namespace Sources\Form;
class SourceForm extends Form {
public function __construct($name = null) {
parent::__construct('sourceForm');
$this
->setHydrator(new ClassMethodHydrator())
->setInputFilter(new InputFilter())
;
$this->setAttribute('method', 'post');
$this->add(array(
//'name' => 'source',
'type' => 'Sources\Form\SourceFieldset',
'options' => array(
'use_as_base_fieldset' => true,
),
));
$this->add(array(
'name' => 'submit',
'type' => 'Submit',
'attributes' => array(
'value' => 'Speichern',
'id' => 'submit',
),
));
$this->add(array(
'type' => 'button',
'name' => 'cancel',
'options' => array(
'label' => 'Abbrechen',
),
));
$this->add(array(
'name' => 'delete',
'type' => 'Submit',
'attributes' => array(
'value' => 'Löschen',
'id' => 'submit',
),
));
}
}