使用Symfony自定义表单

时间:2018-12-03 09:21:31

标签: php symfony symfony4

我有一个已经使用Bootstrap创建的表单,但是我想通过添加类等来对其进行自定义。我在文档上什么也没找到。

这是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) }}    

所以,我想做的是根据我的HTML实际自定义Symfony表单。

感谢阅读。

1 个答案:

答案 0 :(得分:1)

您需要像文档https://symfony.com/doc/4.1/forms.html

中那样声明表格

使用表单类或在控制器中使用表单构建器(表单类是更好的选择)。

然后,在定义字段时,请使用以下代码:

git clone

您可以在选项的->add('subtitle', 'text', array( 'label' => 'Subtitle', 'attr' => array( 'placeholder' => 'The subtitle', 'class' => 'form-control' ), 'required' => false, ) 部分中指定将在HTML文件中呈现类的attr键。

另一种方法是在模板中设置类。为此,您不必调用class而是只使用传递如下属性的字段来调用render函数:

form_row(form.username)

此处有更多信息:https://symfony.com/doc/current/form/form_customization.html