Настройка формы с помощью Symfony - PullRequest
0 голосов
/ 03 декабря 2018

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

Вот обычная форма в HTML:

<form id="form" method="POST">
                        <div class="form-group">
                            <label class="control-label">Pseudo</label>
                            <div class="input-group">
                                <span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
                                <input class="form-control" placeholder="xX_Pseudo_Cool_93_Xx" name="form[username]" id="emailSignUp" type="email" required="required">
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="control-label">Email</label>
                            <div class="input-group">
                                <span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
                                <input class="form-control" placeholder="email@example.com" name="form[email]" id="emailSignUp" type="email" required="required">
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="control-label" for="password">Mot de passe</label>
                            <div class="input-group">
                                <span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
                                <input class="form-control" placeholder="Mot de passe" name="password" id="password" type="password" required>
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="control-label" for="password">Confirmer le mot de passe</label>
                            <div class="input-group">
                                <span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
                                <input class="form-control" placeholder="Confirmer le mot de passe" name="passwordConfirm" id="passwordConfirm" type="password" required>
                            </div>
                        </div>
                        <div class="checkbox">
                            <label>
                                <input id="term" type="checkbox" required>
                                En créant votre compte, vous acceptez nos <a href="{{ path('policy') }}">termes et conditions & politique de confidentialité</a>
                            </label>
                        </div>
                        <button type="submit" id="btnsignup" class="btn btn-primary" style="width: 127px;">S'inscrire</button>
                    </form>

Вот форма, которая действительно работает, но у нее ничего нет, и она с Symfony:

{{ form_start(form) }}
    {{ form_row(form.username) }}
    {{ form_row(form.email) }}
    {{ form_row(form.plainPassword.first) }}
    {{ form_row(form.plainPassword.second) }}

    <button type="submit">Register!</button>
{{ form_end(form) }}    

Итак, я бы хотел настроить форму Symfony на основе моего HTML.

Спасибо за чтение.

1 Ответ

0 голосов
/ 03 декабря 2018

Вам необходимо объявить форму, как в документации https://symfony.com/doc/4.1/forms.html

С помощью класса формы или использования построителя форм в контроллере (класс формы является лучшим вариантом).

Затем при определении полей используйте следующий код:

->add('subtitle', 'text',
           array(
               'label'          => 'Subtitle',
               'attr'           => array(
                   'placeholder' => 'The subtitle',
                   'class' => 'form-control'
               ),
               'required'       => false,
           )

В разделе attr параметров можно указать ключ class, который будет отображать класс в html-файле.

Альтернативой является установка класса в шаблоне.Для этого вместо вызова form_row(form.username) вы вызываете функцию рендеринга только с полями, передающими атрибуты, как показано ниже:

<div class="form-group">
    {{ form_label(form.username, null, {"label_attr": {"class": "col-sm-2 control-label" }}) }}

    <div class="col-sm-10">
        {{ form_widget(form.username, {"attr": {"class": "form-control" } }) }}
    </div>
</div>

Более подробная информация здесь: https://symfony.com/doc/current/form/form_customization.html

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