0

我对选择元素的注释有疑问。我总是得到一个输入字段。

<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-04-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();
4

3 回答 3

0

在这里检查答案...

这可能会有所帮助,也可能无济于事,但至少值得一试......

于 2014-05-06T17:22:44.347 回答
0

我知道这有点旧,但作为参考,这是 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.*。

于 2014-10-31T15:02:21.023 回答
0

我也有同样的问题。想要通过注释来构建我的选择框。我认为 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')); ?>

我知道用这样的东西填写控制器不是一个好主意,但它工作正常。

于 2016-09-07T13:38:45.767 回答