私は ZendFramework2 + Doctrine2 のものをセットアップしています。すべてがうまく機能しています。作成フォームをセットアップしましたが、必要なのはテーブルの関係を処理することです...
たとえば、メイン テーブルはincidencias
で、フィールドの 1 つは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);
}