[英]ZF2 - Element in Form not found
我不明白。 這是我的字段集:
<?php
namespace example\Form;
use example\Entity\User;
use example\Entity\Strategy\PasswordStrategy;
use Doctrine\Common\Persistence\ObjectManager;
use DoctrineModule\Stdlib\Hydrator\DoctrineObject as DoctrineHydrator;
use Zend\Form\Fieldset;
use Zend\InputFilter\InputFilterProviderInterface;
class UserFieldset extends Fieldset implements InputFilterProviderInterface
{
public function __construct(ObjectManager $objectManager)
{
parent::__construct('user');
$this->add(array(
'name' => 'id',
'type' => 'Zend\Form\Element\Hidden',
));
}
public function getInputFilterSpecification()
{
return array();
}
}
這是我的形式:
<?php
namespace example\Form;
use Doctrine\Common\Persistence\ObjectManager;
use DoctrineModule\Stdlib\Hydrator\DoctrineObject as DoctrineHydrator;
use Zend\Form\Form;
use example\Form\UserFieldset;
class UserForm extends Form
{
public function __construct(ObjectManager $objectManager)
{
parent::__construct('user-form');
$userFieldset = new UserFieldset($objectManager);
$userFieldset->setUseAsBaseFieldset(true);
$this->add($userFieldset);
$this->add(array(
'name' => 'submit',
'type' => 'Zend\Form\Element\Submit',
'attributes' => array(
'value' => 'Go',
'id' => 'submitbutton',
),
));
}
}
我的行動:
public function userAction()
{
$objectManager = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
$userForm = new UserForm($objectManager);
return array(
'form' => $userForm
);
}
我的觀點:
<?php
$form = $this->form;
$form->setAttribute('action', $this->url('user'));
$form->prepare();
echo $this->form()->openTag($form);
echo $this->formRow($form->get('id'));
echo $this->formRow($form->get('submit'));
echo $this->form()->closeTag();
而我的錯誤:
在表單中找不到[id]名稱的元素
為什么? 只是提交字段呈現正常,但只要我添加id字段,我就會收到錯誤...
您可以使用FormCollection()進行渲染
<?php
$form = $this->form;
$form->setAttribute('action', $this->url('user'));
$form->prepare();
echo $this->form()->openTag($form);
echo $this->formCollection($form->get('user'));
echo $this->form()->closeTag();
或者像這樣
<?php
$form = $this->form;
$form->setAttribute('action', $this->url('user'));
$form->prepare();
echo $this->form()->openTag($form);
echo $this->formRow($form->get('user')->get("id"));
echo $this->formRow($form->get('user')->get("submit"));
echo $this->form()->closeTag();
嘗試
echo $this->formRow($form->get('user')->get('id'));
您需要通過fieldset獲取此元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.