Symfony 4 - Как создать мою форму Theme для сущности? - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть проект Symfony 4, в котором я пытаюсь настроить коллекцию форм с этим formType:

$builder
            ->add('absences', CollectionType::class, [
                'entry_type' => AbsenceType::class,
                'entry_options' => [
                    'label' => false,
                ],
                'allow_add' => true,
                'allow_delete' => true,
                'delete_empty' => true,
                'by_reference' => true,
                'prototype' => true,
                'label' => false,
                'attr' => array(
                    'class' => 'my-selector',
                    'label' => false,
                ),
            ])
            ->add('feuilleConge', FeuilleCongeType::class, [
                "required" => false,
                'label' => false,
            ]);

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

 $builder
            ->add('dateDebut', TextType::class, $this->getConfiguration("Débute le", "Date de début du congé"))
            ->add('momentDebut', ChoiceType::class, [
                'label' => false, //...
                'choices' => [
                    "matin" => "matin",
                    "après-midi" => "après-midi",
                    "journée" => "journée"
                ],
                'expanded' => true,
                'multiple' => false
            ])
            ->add('dateFin', TextType::class, $this->getConfiguration("Retour le", "Date de fin du congé"))
            ->add('momentFin', ChoiceType::class, [
                'label' => false, //...

                'choices' => [
                    "matin" => "matin",
                    "après-midi" => "après-midi"
                ],

                'expanded' => true,
                'multiple' => false
            ])
            ->add('heureDebut', TimeType::class, [
                "required" => false,
            ])
            ->add('heureFin', TimeType::class, [
                "required" => false,
            ])
            ->add('typeConge', EntityType::class, [
                'class' => TypeConge::class,
                'label' => false,
                'placeholder' => "Type d'absence",
                'choice_label' => 'nom',
                'choice_value' => 'nom',
            ])
            ->add('commentaire', TextType::class, $this->getConfiguration("Commentaire", "Commentaire (facultatif)", [
                'required' => false,
            ]))
            ->add('feuilleConge', FeuilleCongeType::class, [
                "required" => false,
                'label' => false,
            ]);

С помощью этого файла ветки

{% extends "base.html.twig" %}

{% block stylesheets %}<link crossorigin="anonymous" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/css/bootstrap-datepicker.min.css" integrity="sha256-siyOpF/pBWUPgIcQi17TLBkjvNgNQArcmwJB8YvkAgg=" rel="stylesheet"/>

{% endblock %}

{% block body %}

    {{form_start(form)}}
    <h1>Déclarer une absence</h1><br/>

    <div class="row">
        <div class="col-md-6">
            <div class="jumbotron">
                <div class="row">
                    <div class="col-6">
                        <div id="typeConge">
                            {{form_row(form.typeConge, {'attr': {'onchange': 'choiceTypeConge(this)'}})}}
                        </div>

                    </div>
                    <div class="col-6">

                        <div id="choixPeriode">
                            <select class="browser-default custom-select" name="choiceUser" id="choiceUser" onchange="choiceDay(this)">
                                <option value="" disabled selected>Durée de l'absence</option>
                                <option value="jour">La journée</option>
                                <option value="periode">Du xx au xx</option>
                            </select>
                        </div>
                    </div>
                </div>
                <br><br>
                <div id="absence">
                    <div id="momentDebut">
                        <div class="row align-items-center">
                            <div class="col-7">
                                {{form_row(form.dateDebut)}}
                            </div>
                            <div class="col-5">
                                {{form_row(form.momentDebut)}}
                                <div id="formHeures">

                                    {{form_row(form.heureDebut)}}
                                    {{form_row(form.heureFin)}}


                                </div>
                            </div>
                        </div>
                    </div>


                    <div id="momentFin">
                        <div class="row align-items-end">
                            <div class="col-8">
                                {{form_row(form.dateFin)}}
                            </div>
                            <div class="col-4">
                                {{form_row(form.momentFin)}}
                            </div>
                        </div>
                    </div>

                    {{form_row(form.feuilleConge)}}
                    {{form_row(form.commentaire)}}


                    <button class="btn btn-primary" type="submit">Enregistrer</button>
                    <a href="{{path('absence_index')}}" class="btn btn-primary">Annuler</a>
                    {{form_end(form)}}

                </div>
            </div>
        </div>
    </div>

{% endblock %}

Я хотел бы знать, как я могу превратить это всвоего рода тема формы, чтобы на моей странице ветки, связанной с формой сбора отсутствий, когда я выполняю {{form_row (form.absences)}}, которая вызывает вызов моего AbsenceType, он будет отображаться точно так, как я решил в другом файле?

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