Как контролировать порядок помеченных флажков в ветке

1

Поэтому я столкнулся с этим странным поведением, когда перечислял ряд флажков с веточкой

см. новую страницу, она отображает все правильно и говорит, что я сохраняю эту лабораторию

img1 Изображение 174551

хорошо, я сохранил лабораторию, теперь перешел на страницу редактирования

img2 Изображение 174551

отмеченные флажки сначала отображаются, что приведет к разрушению алфавитного порядка, который был на новой странице.

Мне нужно, чтобы страница редактирования стала точно такой же, как новая страница, но я не знаю, как организовать эти флажки на веточке.

блок, который отображает флажки:

{% block _appbundle_laboratory_laboratoryExams_row %}
    <div class="form-group">
        {{ form_label(form) }}
        <div class="col-md-10 col-md-offset-2">
            <div class="app-checkbox-collection">
                <p>{{ 'laboratory.field_laboratory' | trans }}</p>
                {%  dump(form) %}
                {% for child in form %}
                    {% if child.exam.vars.data.type == constant('AppBundle\\Entity\\ExamLaboratory::TYPE')%}
                        {{ form_widget(child.permission, {
                            'attr' : {
                                'class' : 'exam-checkbox'
                            },
                            'label' : child.exam.vars.data.name
                        }) }}
                    {% endif %}
                {% endfor %}
                <p>{{ 'laboratory.field_image' | trans }}</p>
                {% for child in form %}
                    {% if child.exam.vars.data.type == constant('AppBundle\\Entity\\ExamImage::TYPE')%}
                        {{ form_widget(child.permission, {
                            'attr' : {
                                'class' : 'exam-checkbox'
                            },
                            'label' : child.exam.vars.data.name
                        }) }}
                    {% endif %}
                {% endfor %}
            </div>
        </div>
    </div>
{% endblock %}

Я не спрашиваю при португальском потоке stackoverflow, потому что никто не отвечает на вопросы о symfony, мало кто, вероятно,

РЕДАКТИРОВАТЬ:

Вот buildForms:

лаборатория

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name', null, array(
                'label' => 'laboratory.name',
                'attr' => array('class' => 'focus')
            ))                
            ->add('leader', null, array(
                'label' => 'laboratory.leader'
            ))                
            ->add('city', null, array(
                'label' => 'laboratory.city',
                'placeholder' => 'action.select_one'
            ))
            ->add('laboratoryExams', 'collection', array(
                'label' => 'laboratory.laboratoryExams',
                'type' => new LaboratoryExamType(),
                'allow_delete' => true,
                'by_reference' => false,
            ))
        ;
    }

LaboratoryExam

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('permission', null, array(
                'label' => 'laboratoryexam.permission',
            ))
            ->add('exam', null, array(
                'label' => 'laboratoryexam.exam',
            ))
        ;
    }
Теги:
twig
checkbox

3 ответа

0
Лучший ответ

спасибо за ответы, я нашел решение, прибегнув к ArrayCollection в форме.

$iterator = $form->get('laboratoryExams')->getData()->getIterator();
$iterator->uasort(function ($a, $b) {
    return ($a->getExam()->getName() < $b->getExam()->getName()) ? -1 : 1;
});
$form->get('laboratoryExams')->setData(new ArrayCollection(iterator_to_array($iterator)));

ИМО это должно быть сделано по умолчанию, я считаю, что никто не хотел бы, чтобы чек-боксы неупорядочены таким образом

2

Вы можете установить порядок флажков при создании формы:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('permission', 'entity', [
       'class' => 'Acme\AppBundle\Entity\Parameter',
       'multiple' => true,
       'expanded' => true,
       'query_builder'=> function(EntityRepository $repository) {
            return $repository->createQueryBuilder('exam')->orderBy('exam.title', 'ASC');
        },
    ]);
}
  • 0
    сделал это, но он дает мне ряд полей выбора вместо флажков
  • 0
    @jbrunoxd Я обновил свой ответ по этой проблеме
1

Я бы сказал, что это не имеет ничего общего с веточкой.

Это будет установлено на объекте типа формы, где будет сформирована форма с флажками.

Кажется, что данные заполняются программно при создании формы, причем сначала выбранные варианты являются первыми.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню