2016-01-17 4 views
1

нормально, я бегу с symfony 2.7.8. У меня есть абстрактная форма пользователя, в которой я добавил параметр «активный», который, похоже, работает, так как в нем мне нравится указывать, что пользователь активен/неактивен, если захочу.Symfony 2 Radio Button Boolean Issue?

Однако, когда пользователь настроен на Non-Active (0), он не проверяет этот параметр радио. По умолчанию проверяется, активен ли пользователь (1). Я просто делаю что-то неправильно или что?

Активный «Добавить» раздел

$ActiveState = [0 => 'Non-Active', 1 => 'Active']; 

    ->add('active', 'choice', [ 
          'label' => 'Active State', 
          'multiple' => false, 
          'choices' => $ActiveState, 
          'expanded' => true, 
          'label_attr' => ['class' =>'Active'] 
          ]) 

И это, как я построить форму для загрузки пользователя

$User = $this->getDoctrine() 
        ->getRepository('XXXXBundle:Users') 
        ->find($id); <- If i passed in url e.g. /user/ID-HERE 

    $EditUser = $this->createForm(new UserType(),$User,[ 
           'action' => $this->generateUrl('UserUpdate',['id' => $id]), 
           'method' => 'PUT' 
           ]); 

Когда я выбираю одну из кнопок радио будет обновлять, что пользователь, но только предварительно установлен Active User?

Так что я делаю неправильно?

Вся помощь приветствуется, ps. если кто-то хочет, чтобы я опубликовал все функции контроллера или пользовательскую форму, пожалуйста, дайте мне знать.

Спасибо.

+0

Какого типа устанавливаются для этого поля в отображении свойств? –

+0

@Max P. - Вы имеете в виду в ORM? Я использую файлы .yml и его набор в boolean - я думал попробовать его с целым числом, чтобы посмотреть, не проблема ли с этим, но я думал, что это скорее будет с формой? –

ответ

2

У меня была такая же проблема с булевым свойством (false-0 не работает, правда-1 работа). Я добавил трансформатор представлений для этого элемента формы, чтобы он работал правильно.
После ->add(...)

$builder->get('active')->addViewTransformer(new \Symfony\Component\Form\CallbackTransformer(
    function ($original) { 
     return $original ? 1 : 0; 
    }, 
    function ($submitted) { 
     return $submitted ? true : false; 
    } 
)); 
+0

Плотина, работала без проблем :) - Как вы думаете, это ошибка? С Симфонией или с учением? Я просто не могу понять, почему они могут ошибиться в логическом элементе? - В любом случае спасибо помощнику! –

+1

О, я не знаю. Может быть, это особенность :) –

+0

LOL :) - Так правда .... –