Показать поле ManyToOne в формах Symfony2? - PullRequest
3 голосов
/ 23 февраля 2012

У меня есть два файла сущностей, один как user.php, а другой как usertype.php.Теперь я хочу, чтобы отобразить форму входа в систему с 3 полями, а именно имя пользователя, пароль и тип пользователя.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');
    }
}

Теперь мне нужно добавить еще одно полемоему конструктору форм, это будет таблица пользовательских типов.

Ответы [ 3 ]

9 голосов
/ 23 февраля 2012
...
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',
            )
        );
    }
}

Вы можете прочитать дополнительную информацию о типе поля сущности , которое предоставит вам опции, доступные для этого типа поля.

Не забудьте добавить __toString() метод для вашей модели, чтобы сообщить построителю формы, что отображать.

namespace Acme\YourBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

class Usertype
{
    public function __toString()
    {
        return $this->getName();
    }
}
2 голосов
/ 23 февраля 2012

Есть и другие способы сделать это, но вы можете попробовать это:

$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
    )
);

Надеюсь, это помогло!

0 голосов
/ 30 июня 2014

http://symfony.com/doc/2.0/reference/forms/types/entity.html

property¶

тип: строка

Это свойство, которое следует использовать для отображения сущностей в виде текста в элементе HTML. Если оставить это поле пустым, объект будет преобразован в строку и должен иметь метод __toString ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...