如何将类应用于验证错误消息?

时间:2017-02-20 21:33:51

标签: php symfony

我有一个简单表单,因为它显示在 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;

1 个答案:

答案 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上自定义表单主题。