我有一个简单表单,因为它显示在 UserType.php 代码源中。
此外,我正在使用 fosuserbundle ,在我的情况下,当我尝试创建已存在相同用户名的用户或具有不同密码/ Repeatedpassword的用户时,会显示新的验证消息起来。
问题是:如何将自定义CSS / Html类应用于该验证消息?。
UserType.php:
->add('plainPassword', RepeatedType::class, array(
'invalid_message' => 'The passwords must be identical.',
'first_options' => array('label' => 'Password'),
'second_options' => array('label' => 'Repeate Password'),
)
User.php:
<?php
namespace AppBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
/**
* @Vich\Uploadable
* @ORM\Entity
* @ORM\Table(name="fos_user")
* @UniqueEntity(fields="usernameCanonical", errorPath="username", message="fos_user.username.already_used", groups={"Default", "Registration", "Profile"})
* @UniqueEntity(fields="emailCanonical", errorPath="email", message="fos_user.email.already_used", groups={"Default", "Registration", "Profile"})
*/
class User extends BaseUser {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*
*/
protected $id;
答案 0 :(得分:2)
您可以通过将自己的模板添加到捆绑包中来覆盖默认表单模板。可以找到here(默认布局)和here(Bootstrap)的示例。
在您的情况下,您需要修改form_errors
块:
{%- block form_errors -%}
{%- if errors|length > 0 -%}
<ul>
{%- for error in errors -%}
<li>{{ error.message }}</li>
{%- endfor -%}
</ul>
{%- endif -%}
{%- endblock form_errors -%}
要选择一个这样的布局,请根据需要调整配置:
twig:
form_themes:
# Default:
- form_div_layout.html.twig
# Bootstrap
- bootstrap_3_layout.html.twig
# Your own:
- MyBundle::form.html.twig
(摘自Twig reference)
详细了解如何在Symfony docs上自定义表单主题。