Skip to content

MindyPHP/FormBundle

Repository files navigation

Form Bundle

Build Status codecov Latest Stable Version Total Downloads

The Form Bundle

Resources

FieldsetType

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $instance = $builder->getData();

        $builder
            ->add('fieldset_1', FieldsetType::class, [
                'legend' => 'Информация',
                'fields' => function (FormBuilderInterface $builder) use ($instance) {
                    $builder
                        ->add('parent', ChoiceType::class, [
                            'label' => 'Родительская категория',
                            'required' => false,
                            'choices' => Category::objects()->order(['root', 'lft'])->all(),
                            'choice_label' => function ($page) {
                                return sprintf('%s %s', str_repeat('-', $page->level - 1), $page);
                            },
                            'choice_value' => 'id',
                            'choice_attr' => function ($page) use ($instance) {
                                return $page->pk == $instance->pk ? ['disabled' => 'disabled'] : [];
                            },
                        ])
                        ->add('name', TextType::class, [
                            'label' => 'Название',
                        ])
                        ->add('image', FileType::class, [
                            'label' => 'Изображение',
                            'required' => false,
                            'constraints' => [
                                new Assert\File([
                                ]),
                            ],
                        ])
                        ->add('show_category', CheckboxType::class, [
                            'label' => 'Отображать дочерние категории (Если выключено, то отображаются только товары)',
                            'required' => false,
                        ])
                        ->add('seo', SeoFormType::class, [
                            'label' => 'Мета информация',
                            'source' => $instance,
                            'mapped' => false,
                        ]);
                }
            ])
            ->add('submit', SubmitType::class, [
                'label' => 'Сохранить',
            ])
            ->add('submit_create', SubmitType::class, [
                'label' => 'Сохранить и создать',
            ]);
    }

TabsType & TabType

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $instance = $builder->getData();

        $builder
            ->add('tabs', TabsType::class, [
                'tabs' => function (FormBuilderInterface $builder) use ($instance) {
                    $builder
                        ->add('first', TabType::class, [
                            'tab' => 'Информация',
                            'fields' => function (FormBuilderInterface $builder) use ($instance) {
                                $builder
                                    ->add('parent', ChoiceType::class, [
                                        'label' => 'Родительская категория',
                                        'required' => false,
                                        'choices' => Category::objects()->order(['root', 'lft'])->all(),
                                        'choice_label' => function ($page) {
                                            return sprintf('%s %s', str_repeat('-', $page->level - 1), $page);
                                        },
                                        'choice_value' => 'id',
                                        'choice_attr' => function ($page) use ($instance) {
                                            return $page->pk == $instance->pk ? ['disabled' => 'disabled'] : [];
                                        },
                                    ])
                                    ->add('name', TextType::class, [
                                        'label' => 'Название',
                                    ])
                                    ->add('image', FileType::class, [
                                        'label' => 'Изображение',
                                        'required' => false,
                                        'constraints' => [
                                            new Assert\File([
                                            ]),
                                        ],
                                    ])
                                    ->add('show_category', CheckboxType::class, [
                                        'label' => 'Отображать дочерние категории (Если выключено, то отображаются только товары)',
                                        'required' => false,
                                    ]);
                            }
                        ])
                        ->add('seo', TabType::class, [
                            'tab' => 'Мета информация',
                            'fields' => function (FormBuilderInterface $builder) use ($instance) {
                                $builder
                                    ->add('seo', SeoFormType::class, [
                                        'label' => 'Мета информация',
                                        'source' => $instance,
                                        'mapped' => false,
                                    ]);
                            }
                        ]);
                }
            ])
    
            ->add('submit', SubmitType::class, [
                'label' => 'Сохранить',
            ])
            ->add('submit_create', SubmitType::class, [
                'label' => 'Сохранить и создать',
            ]);
    }

ButtonsType

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('buttons', ButtonsType::class, [
                'buttons' => function (FormBuilderInterface $builder) {
                    $builder
                        ->add('submit', SubmitType::class, [
                            'label' => 'Сохранить',
                        ])
                        ->add('submit_create', SubmitType::class, [
                            'label' => 'Сохранить и создать',
                        ]);
                }
            ])
    }