【发布时间】:2012-05-21 13:00:07
【问题描述】:
我目前正在为一个项目使用 Symfony 2.0.13,并且正在处理用户注册表单。我的项目为此使用了 Doctrine ORM、Twig 和 Form 组件。
每个用户都必须选择一个区域。 Area 对象基本上是这样定义的:
<?php
namespace Acme\AwesomeBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table
* @ORM\Entity
*/
class Area
{
/**
* @var integer $id
*
* @ORM\Column(type="smallint", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
*
* @ORM\Column(type="string", length="64", nullable=false)
*/
private $name;
/**
* @ORM\ManyToOne(targetEntity="Area", inversedBy="children")
* @ORM\JoinColumn(name="parent")
*/
private $parent;
/**
*
* @ORM\OneToMany(targetEntity="Area", mappedBy="parent")
*/
private $children;
/**
*
* @ORM\Column(type="boolean", nullable=false)
*/
private $selectable;
// + all the default getters and setters generated using the Symfony console
// + a __toString() method which returns the name
如您所见,一个区域可以有子区域(子区域),也可以有子区域(例如,一个国家/地区将是一个区域,将有多个省/州,并且它们都将具有城市)。 此外,可以将区域标记为可选或不可选。
我想向用户显示一个下拉框以选择其中一个区域,但层次结构应该清晰可见(我正在考虑使用连字符缩进项目)并且应该禁用标记为不可选择的区域,但是显示在列表中。
我想我应该创建一个新的 Form 类型,但我并不清楚我应该如何生成 ChoiceList(或选择数组)。 所以希望有人可以为我指明正确的方向或为我提供一些有用的资源。
【问题讨论】:
标签: php forms symfony symfony-forms