ZF2 Doctrine Form 注解类型选择
Posted
技术标签:
【中文标题】ZF2 Doctrine Form 注解类型选择【英文标题】:ZF2 Doctrine Form Annotation Type Select 【发布时间】:2014-05-25 14:25:54 【问题描述】:我对选择元素的注释有疑问。我总是得到一个输入字段。
<div class="form-group "><label>test:</label><input type="number" name="test" class="form-control" value="1"></div>
这是我的注释。
/**
* @var integer
*
* @ORM\Column(name="test", type="integer", nullable=false)
* @Annotation\Type("Zend\Form\Element\Select")
* @Annotation\Filter("name":"StringTrim")
* @Annotation\Options("label":"test:", "value_options":"0":"yes","1":"no")
*/
private $persistent = '0';
我是不是忘记了什么?
亲切的问候:)
2014 年 4 月 23 日更新
在我的操作中,我创建了表单
$builder = new DoctrineAnnotationBuilder($entityManager);
$form = $builder->createForm( $user );
$form->setHydrator(new DoctrineHydrator($entityManager,'Test\Entity\Test'));
这是我的观点
<?
$form = $this->form;
$form->setAttribute('action', $this->url('user/edit', array('id' => $this->id))); //'contact/process'));
$form->setAttribute('method', 'post');
echo $this->form()->openTag($form);
echo $this->formCollection($form);
echo $this->form()->closeTag();
【问题讨论】:
如何在视图文件中呈现表单? 好吧,我也有同样的问题。创建了一个整数类型的 ORM/列并分配了一个 @Annotation\Type Zend\Form\Element\Select 但我收到异常“Zend\Form\View\Helper\FormSelect::render 要求该元素的类型是 Zend\ Form\Element\Select”,因为我正在尝试使用 formSelect 视图助手渲染元素,而 Doctrine 创建了一个 Zend\Form\Element\Number 类型的元素。另一种方法是为“test”的可能值声明一个新的 Doctrine ORM 实体,这对我来说已经适用于另一种成员变量,如“语言”和“安全问题” 您找到解决方案了吗?我也有同样的问题... 【参考方案1】:Check the answer here...
这可能有帮助,也可能没有帮助,但至少值得一试......
【讨论】:
实际上注释本身正在工作。我试试看,但没什么区别。谢谢 :)【参考方案2】:我知道这有点旧,但作为参考,这是 Doctrine 2 Annotated 实体中的实体属性 docblock,可用于呈现固定列表选择:
/**
* @var string
*
* @ORM\Column(name="layout", type="string", length=45, nullable=true)
* @Annotation\Type("Zend\Form\Element\Select")
* @Annotation\Options(
* "label":"Layout:",
* "value_options":"":"", "one-page":"One Page", "multi-page":"Multi-page"
* )
*/
private $layout;
使用最新的 ZF 2.3.*。
【讨论】:
【参考方案3】:我也有同样的问题。想要通过注释来构建我的选择框。 我认为 Hydrator 并没有真正做到(Doctrine 2 ORM v 1,* 和 ZF2.5)。
只需使用迭代器并使用
实体:
use Doctrine\ORM\Mapping as ORM;
use Zend\Form\Annotation;
/**
* @var \Backend\Entity\Mastercategory
*
* @Annotation\Type("Zend\Form\Element\Select")
* @ORM\ManyToOne(targetEntity="Backend\Entity\Mastercategory")
* @ORM\JoinColumns(
* @ORM\JoinColumn(name="sub_pid", referencedColumnName="id")
* )
*/
private $subPid;
控制器:
//mastercategories is my Object EntityClass actually with getter_setter
$arr = new \ArrayIterator($mastercategories);
$masterToArr = array();
while ($arr->valid())
$mid = $arr->current()->getId();
$mname = $arr->current()->getMasterName();
$masterToArr[$mid] = $mname;
$arr->next();
$form->get('subPid')->setOptions(array('type' => 'select', 'value_options' => $masterToArr));
查看者:
<?php echo $this->formSelect($form->get('subPid')); ?>
我知道用这样的东西填充控制器不是一个好主意,但它工作正常。
【讨论】:
以上是关于ZF2 Doctrine Form 注解类型选择的主要内容,如果未能解决你的问题,请参考以下文章
要处理的zf2 + doctrine2和No Metadata类
ZF2 Doctrine - 使用查询构建器如何指向存储库中的自定义方法