我正在设置 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);
}