gpt4 book ai didi

zend-framework - 在扩展的 zend 表单类中使用注释生成器

转载 作者:行者123 更新时间:2023-12-04 19:32:42 32 4
gpt4 key购买 nike

我正在阅读 http://mwop.net/blog/2012-07-02-zf2-beta5-forms.html并在 zf2 和 doctrine 中使用该注释构建器没有任何问题

我想知道我是否有一个 zend 表单类...例如类 bookForm ...我如何在类中使用这个注释生成器

例如从学说实体注释加载基本字段然后在 bookForm 类中添加一些额外的东西(如提交按钮)...

在 mwop.net 示例中,它在 Controller 中使用...如果我在该 Controller 中添加额外的表单字段会太难看..

use MyVendor\Model\User;
use Zend\Form\Annotation\AnnotationBuilder;

$user = new User();
$builder = new AnnotationBuilder();
$form = $builder->createForm($user);

$form->bind($user);
$form->setData($dataFromSomewhere);
if ($form->isValid()) {
// $user is now populated!
echo $form->username;
return;
} else {
// probably need to render the form now.
}

请帮忙

最佳答案

我在尝试找到一种使用 AnnotationBuilder 添加字段集的方法时发现了这个问题。添加字段集的正确方法是像这样在您的实体中设置 Annotation\Type

namespace Application\Entity;
/**
*
* My Entity.
*
* @ORM\Entity
* @ORM\Table(name="my_table")
*
* @Annotation\Name("my_name")
* @Annotation\Type("fieldset")
*
*/
class SomeEntity ...

然后在您的表单中,您可以像这样将带注释的表单添加为字段集

namespace Application\Form;

use Zend\Form\Form,
Doctrine\Common\Persistence\ObjectManager,
DoctrineModule\Stdlib\Hydrator\DoctrineObject as DoctrineHydrator,
Zend\Form\Annotation\AnnotationBuilder;

class SomeForm extends Form
{
public function __construct(ObjectManager $objectManager)
{
// we want to ignore the name passed
parent::__construct('entity-create-form');
$this->setAttribute('method', 'post')
->setHydrator(new DoctrineHydrator($objectManager));

$builder = new AnnotationBuilder();

$entity = new Application\Entity\SomeEntity;
//Add the fieldset, and set it as the base fieldset
$fieldset = $builder->createForm( $entity ) ;
$fieldset->setUseAsBaseFieldset(true);
//var_dump($fieldset);
$this->add( $fieldset );


$this->add(array(
'type' => 'Zend\Form\Element\Csrf',
'name' => 'csrf'
));

$this->add(array(
'name' => 'submit',
'attributes' => array(
'type' => 'submit',
'value' => 'Save'
)
));
}
}

希望这对其他人有帮助。

关于zend-framework - 在扩展的 zend 表单类中使用注释生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12002722/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com