Zend Framework 2 Doctrine 2 Forms

时间:2013-06-16 22:02:26

标签: database doctrine-orm zend-framework2 relationship

我正在设置一个ZendFramework2 + Doctrine2的东西,一切都运行良好,我已经设置了创建表单,但我需要的是处理我的表格的关系......

例如,主表格为incidencias,其中一个字段为categoria_id,引用表categorias ...我需要在表单上select字段,我可以在其中选择categorias.nombre ....

以下是incidencias实体和categorias实体的代码,以及表单代码......

Incidencias实体

/**
 * @var \Portal\Entity\Categorias
 *
 * @ORM\ManyToOne(targetEntity="Portal\Entity\Categorias")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="categoria_id", referencedColumnName="id")
 * })
 * @Annotation\Type("Zend\Form\Element\Select")
 * @Annotation\Required({"required":"true" })
 * @Annotation\Options({"label":"Categoria"})
 */
private $categoria;
/**
 * Set categoria
 *
 * @param \Portal\Entity\Categorias $categoria
 * @return Incidencias
 */
public function setCategoria(\Portal\Entity\Categorias $categoria = null)
{
    $this->categoria = $categoria;

    return $this;
}

/**
 * Get categoria
 *
 * @return \Portal\Entity\Categorias 
 */
public function getCategoria()
{
    return $this->categoria;
}

分类实体

class Categorias
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="nombre", type="string", length=250, nullable=true)
     */
    private $nombre;



    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set nombre
     *
     * @param string $nombre
     * @return Categorias
     */
    public function setNombre($nombre)
    {
        $this->nombre = $nombre;

        return $this;
    }

    /**
     * Get nombre
     *
     * @return string 
     */
    public function getNombre()
    {
        return $this->nombre;
    }
}

表单控制器

public function addAction()
{
    $builder = new AnnotationBuilder();
    $form   = $builder->createForm(new Incidencias());

    $form->add(array(
        'name' => 'submit',
        'attributes' => array(
            'type'  => 'submit',
            'value' => 'Add',
            'id' => 'submitbutton',
        ),  
    ));

    $request = $this->getRequest();
    if($request->isPost())
    {
        $incidencia = new Incidencias();
        $form->setData($request->getPost());

        if($form->isValid())
        {
            $incidencia->exchangeArray($form->getData());

            return $this->redirect()->toRoute('incidencias');
        }
    }

    return array('form'=>$form);
}

0 个答案:

没有答案