0

我正在设置 ZendFramework2 + Doctrine2 的东西,一切正常,我已经设置了创建表单,但我需要处理我的表的关系......

例如,主表是incidencias,其中一个字段是categoria_id引用表categorias...我需要进入我的表单,一个 select字段,我可以在其中选择categorias.nombre...。

这是来自incidencias实体和categorias实体的代码,也是表单的代码......

事件实体

/**
 * @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);
}
4

0 回答 0