Symfony2: установка значения «set» для расширенного поля множественного выбора (флажок) - PullRequest
0 голосов
/ 02 апреля 2012

Когда форма отправляется и после обновления отображается снова, Запрос связывается с формой и показывает выбранные значения. Я хочу гидрировать форму с данными из внешнего массива (сеанс в моем случае), если форма не была передана ранее. Форма - это тип массива, не связанный с какой-либо сущностью, так как он работает как фильтр БД.

У меня есть расширенное поле формы выбора, настроено несколько (флажок), как показано ниже:

    $categoryForm = array();
    $form = $this->createFormBuilder( $categoryForm )
                 ->add( 'id', 'choice', array( 'choices' => $arrayOfChoices,
                                               'multiple' => true,
                                               'expanded' => true ) )
                 ->getForm();
    if ( $request->getMethod() == 'POST' ) {
        $form->bindRequest( $request );
    }

Ответы [ 2 ]

0 голосов
/ 03 апреля 2012

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

    //bind filters from session to form
    $sessionFilter = $session->get('filter');
    if ( !is_null( $sessionFilter ) ) {
       $form->bind( $sessionFilter );
    }

    if ( $request->getMethod() == 'POST' ) {
        $form->bindRequest( $request );
        $formData = $form->getData();

        if ( count($formData) > 0 ) {
            foreach ( $formData as $fdkey => $data ) {
                if ( $fdkey == 'id' OR $fdkey == 'morezero' ) {
                    foreach ( $data as $value ) {
                        $sessionData[$fdkey][$value] = $value ;
                    }
                }
            }
            $session->set( 'filter', $sessionData );
        }
    }
0 голосов
/ 02 апреля 2012

Вы должны передать переменную в форму (в контроллере), а затем использовать переданную переменную в классе построителя.

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