首页 > 解决方案 > Symfony 5 表单域在不应该出现的时候出现

问题描述

我用树枝显示一个用于添加事件的表单,如果没有用户连接,则可以同时创建一个新帐户。所以我有一个表单与另一个表单集成,我的 UserType 表单与我的 EventType 表单集成。

我做了一个条件,如果用户已登录,我们将不会显示注册表单。只有事件创建。

这是我的代码:

{{ form_start(form) }}
    {% if form.vars.valid == false %}
        <div class="alert alert-danger">
            Des erreurs ont été relevées. Merci de vérifier le formulaire.
        </div>
    {% endif %}
    {% if app.user == false %}
        <div id="general_info">
            <h4> <i class="ion-ios-information"></i> À propos de vous</h4>
            <div class="row">
                <div class="col-md-6">
                    <div class="form-group">
                        {{ form_row(form.user.lastName, {'label': 'Votre nom *', 'attr': {'class': 'filter-input'}}) }}
                    </div>
                </div>
                <div class="col-md-6">
                    <div class="form-group">
                        {{ form_row(form.user.firstName, {'label': 'Votre prénom *', 'attr': {'class': 'filter-input'}}) }}
                    </div>
                </div>
                <div class="col-md-6">
                    <div class="form-group">
                        {{ form_row(form.user.password.first, {'label': 'Votre mot de passe *', 'attr': {'class': 'filter-input'}}) }}
                    </div>
                </div>
                <div class="col-md-6">
                    <div class="form-group">
                        {{ form_row(form.user.email, {'label': 'Votre adresse email *', 'attr': {'class': 'filter-input'}}) }}
                    </div>
                </div>
                <div class="col-md-6">
                    <div class="form-group">
                        {{ form_row(form.user.password.second, {'label': 'Confirmez votre mot de passe *', 'attr': {'class': 'filter-input'}}) }}
                    </div>
                </div>
            </div>
        </div>
    {% endif %}
    <div id="event_and_category">
        <h4><i class="ion-ios-list-outline"></i> Nom &amp; Catégorie</h4>
        <div class="row">
            <div class="col-md-6">
                {{ form_row(form.title) }}
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    {{ form_row(form.category) }}
                </div>
            </div>
        </div>
    </div>
    <div id="date_and_location">
        <h4><i class="ion-ios-location"></i> Date &amp; Localisation</h4>
        <h5>Où se déroule votre événement ?</h5>
        <div class="row">
            <div class="col-md-6">
                <div class="form-group">
                    {{ form_row(form.location) }}
                </div>
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    {{ form_row(form.address) }}
                    {{ form_row(form.latitude) }}
                    {{ form_row(form.longitude) }}
                </div>
            </div>
            <div class="col-md-6"></div>
            <div class="col-md-6 no-padding mar-bot-20">
                <div id="map"></div>
            </div>
        </div>
        <h5>Quand se déroule votre événement ?</h5>
        <div class="row">
            <div class="col-md-6">
                <div id="datepicker-from" class="input-group date" data-date-format="dd/mm/yyyy">
                    {{ form_row(form.startDate) }}
                    <span class="input-group-addon"><i class="icofont-ui-calendar"></i></span>
                </div>
            </div>
            <div class="col-md-6">
                <div id="datepicker-to" class="input-group date" data-date-format="dd/mm/yyyy">
                    {{ form_row(form.endDate) }}
                    <span class="input-group-addon"><i class="icofont-ui-calendar"></i></span>
                </div>
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    {{ form_row(form.startAt) }}
                </div>
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    {{ form_row(form.endAt) }}
                </div>
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    {{ form_row(form.dateDescription) }}
                </div>
            </div>
        </div>
    </div>
    <div id="event_info">
        <h4><i class="ion-ios-calendar-outline"></i> Votre événement</h4>
        <h5>Informations de contact</h5>
        <div class="row">
            <div class="col-md-6">
                <div class="form-group">
                    {{ form_row(form.contactName) }}
                </div>
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    {{ form_row(form.contactEmail) }}
                </div>
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    {{ form_row(form.contactPhone) }}
                </div>
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    {{ form_row(form.organisatorEmail) }}
                </div>
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    {{ form_row(form.organisatorPhone) }}
                </div>
            </div>
        </div>
        <h5>Décrivez votre événement</h5>
        <div class="row">
            <div class="col-md-6">
                <div class="form-group">
                    {{ form_row(form.description) }}
                </div>
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    {{ form_row(form.tags) }}
                </div>
            </div>
        </div>
        <h5>Choisissez une image pour votre événement</h5>
        <div class="row">
            <div class="col-md-6">
                <div class="form-group">
                    <div class="add-listing__input-file-box">
                        {{ form_row(form.coverFile) }}
                        <div class="add-listing__input-file-wrap">
                            <i class="ion-ios-cloud-upload"></i>
                            <p>Ajoutez une photo ou une image</p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <h5>Bulletin d'inscription</h5>
        <div class="row">
            <div class="col-md-6">
                <div class="form-group">
                    <form class="photo-upload">
                        <div class="form-group">
                            <div class="add-listing__input-file-box">
                                {{ form_row(form.registrationForm) }}
                                <div class="add-listing__input-file-wrap">
                                    <i class="ion-ios-cloud-upload"></i>
                                    <p>Ajoutez un fichier</p>
                                </div>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
        <h5>Réseaux sociaux</h5>
        <div class="row">
            <div class="col-md-6">
                <div class="form-group">
                    {{ form_row(form.website) }}
                </div>
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    {{ form_row(form.facebookPage) }}
                </div>
            </div>
        </div>
        <h5>Annonce PREMIUM</h5>
        <div class="row">
            <div class="col-md-12 annonce-premium">
                {{ form_row(form.featured) }}
            </div>
        </div>
        {{ form_row(form._token) }}
        {{ form_row(form.save) }}
    </div>
{{ form_end(form) }}

到目前为止一切都很好,如果我登录了“关于你”部分并没有出现。我的问题是它看起来更低!

我的形象

所以在我的提交按钮之后。如何解决这个问题呢 ?

标签: phpsymfony5

解决方案


在您的form_end(form)行中,添加一个标志来告诉 twig 不要呈现未使用的表单:

{{ form_end(form, { 'render_rest': false }) }}

推荐阅读