используя dbal доктрины в symfony2 с формами - PullRequest
1 голос
/ 22 марта 2012

Итак, я хочу сделать следующее:

Я создал класс формы в /Form/Type/UserType.php

У меня есть таблица со списком состояний (таблица с именем "states ").

Я хочу показать все эти состояния в раскрывающемся меню.

Какой код следует использовать в классе UserType, чтобы показать все состояния?

Я пытался:

    $request = new Request;
    $conn = $request->get('database_connection');
    $states = $conn->fetchAll('SELECT state_code, state_name FROM states');

    $builder->add('state', 'choice', array(
        'choices'   => $states,
        'required'  => false,
   ));

, но это дает мне ошибку.По сути, я хочу запросить все состояния из таблицы состояний и создать выпадающее меню из всех этих состояний.

Ответы [ 2 ]

0 голосов
/ 23 марта 2012

@ m2mdas дал вам правильный ответ на основе объекта.Однако, если все, что вы действительно хотите сделать, это сохранить код_состояния, то то, что у вас есть, будет почти работать.Вам просто нужно правильно установить соединение.

class MyType extends extends AbstractType
{
    public function __construct($em) { $this->em = $em; }

    public function buildForm(FormBuilder $builder, array $options)
    {
        $conn = $this->em->getConnection();
        $statesx = $conn->fetchAll('SELECT state_code, state_name FROM states');

        // Need to index for the choice
        $states = array();
        foreach($statesx as $state) 
        { 
            $states[$state['state_code']] = $state['state_name']; 
        }

        $builder->add('state', 'choice', array(
            'choices'   => $states,
            'required'  => false,
        ));

...
// In your controller
$form = new MyType($this->getDoctrine()->getEntityManager());
0 голосов
/ 22 марта 2012

Вы можете создать State сущность, сопоставить ее с таблицей states и создать отношение OneToMany с сущностью User. Тогда в вашей UserType форме $builder->add('state') следует автоматически создать выпадающее поле. Вы также должны установить опцию data_class для вашей сущности User в методе getDefaultOptions формы UserType.

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