我有两个实体文件,一个是user.php,另一个是usertype.php。现在我想显示一个包含3个字段的登录表单,即用户名,密码和usertype。 usertype将是一个从usertype表中获取数据的选择。这是我在user.php中编写的代码,用于为usertype_id
创建一个多字段字段/**
* @ORM\ManyToOne(targetEntity="Usertype")
*/
protected $usertype;
以下是我的表单生成代码
class LoginForm extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('login', 'text', array('label' => 'Username',));
$builder->add('password');
}
}
现在我需要在表单构建器中再添加一个字段,该字段将是一个usertype表的选择。
答案 0 :(得分:9)
...
use Acme\YourBundle\Entity\Usertype;
class LoginForm extends AbstractType {
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('usertype', 'entity',
array(
'class' => 'AcmeYourBundle:Usertype'
'label' => 'User Type',
)
);
}
}
您可以阅读有关the entity field type的更多信息,它将为您提供此类字段的可用选项。
请勿忘记在模型中添加 __toString()
方法,以告知表单构建器要显示的内容。
namespace Acme\YourBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
class Usertype
{
public function __toString()
{
return $this->getName();
}
}
答案 1 :(得分:2)
还有其他方法可以做到,但你可以试试这个:
$builder->add('usertype', 'entity',
array(
'class' => 'YourBundle:UserType
'required' => true, // Choose if it's required or not
'empty_value' => 'User type', // Remove this line if you don't want empty values
'label' => 'Type', // You can put a label here or remove this line
)
);
我希望它有所帮助!
答案 2 :(得分:-1)
http://symfony.com/doc/2.0/reference/forms/types/entity.html
property¶
type:string
这是应该用于在HTML元素中将实体显示为文本的属性。如果留空,则实体对象将被强制转换为字符串,因此必须具有__toString()方法。