在Symfony2表单中显示ManyToOne字段?

Sco*_*ion 3 symfony

我有两个实体文件,一个是user.php,另一个是usertype.php.现在我想显示一个包含3个字段的登录表单,即用户名,密码和usertype.usertype将是一个从usertype表中获取数据的选择.这是我在user.php中编写的代码,用于为usertype_id创建manytoone字段

/**
* @ORM\ManyToOne(targetEntity="Usertype")
*/
protected $usertype;
Run Code Online (Sandbox Code Playgroud)

下面是我的表单生成代码

class LoginForm extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('login', 'text', array('label'  => 'Username',));
        $builder->add('password');
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我需要在表单构建器中添加一个字段,该字段将是usertype表的选择.

ray*_*nco 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',
            )
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以阅读有关实体字段类型的更多信息,它将为您提供此类字段可用的选项.

不要忘记向__toString()模型添加方法以告诉表单构建器要显示的内容.

namespace Acme\YourBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

class Usertype
{
    public function __toString()
    {
        return $this->getName();
    }
}
Run Code Online (Sandbox Code Playgroud)