Symfony2校验Getter方法的错误信息不是属于某一个表单项,而是整个表单的错误,何解?

    /**
     * @Assert\True(message = "手机号格式不正确")
     */
    public function isPhoneLegal    ()
    {
        if (!preg_match('/^1[0-9]{10}$/', $this->phone)) {
            return false;
        }
        return true;
    }

如上在Entity中写了一个Getter的方法来检验手机号,按我的逻辑来这个方法的错误消息应该属于字段为phone的表单项。但是实际上是属于整个表单的错误
图片描述

这个给我造成许多困扰,我在twig中重构了errors,如下:

    {# 重构errors样式 #}
    {% form_theme form _self %}
    {%- block form_errors -%}
        {%- if errors|length > 0 -%}
            <div class="am-alert am-alert-danger" style="">
                {%- for error in errors -%}
                    {{ error.message }}
                {%- endfor -%}
            </div>
        {%- endif -%}
    {%- endblock form_errors -%}

这样子会直接在页面输出整个表单的错误。如下:

图片描述

求大神解决方法,拜谢

阅读 1.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进