【问题标题】:Symfony2 Constraints\email not foundSymfony2 约束\电子邮件未找到
【发布时间】:2014-03-04 09:53:26
【问题描述】:

我在 Symfony2 中为时事通讯表单安装了一个电子邮件验证器。在本地一切正常,但如果我将整个文件夹上传到我的虚拟主机,我会收到以下错误消息:

Fatal error: Class 'Symfony\Component\Validator\Constraints\email' not found in /home/donacico/public_html/spendu/donaci14/vendor/symfony/symfony/src/Symfony/Component/Validator/Mapping/Loader/AbstractLoader.php on line 64

我的验证 yml 如下所示:

# src/Dbe/DonaciBundle/Resources/config/validation.yml
Dbe\DonaciBundle\Entity\Newsletter:
    properties:
        email:
            - email:
                message: The email "{{ value }}" is not a valid email.
                checkMX: true

Dbe\DonaciBundle\Entity\Contact:
    properties:
        email:
            - email:
                message: The email "{{ value }}" is not a valid email.
                checkMX: true

这里是创建控制器的动作:

/**
     * Creates a new Newsletter entity.
     *
     */
    public function createAction(Request $request) {
        $entity = new Newsletter();
        $form = $this -> createCreateForm($entity);
        $form -> handleRequest($request);

        if ($form -> isValid()) {
            $em = $this -> getDoctrine() -> getManager();
            $em -> persist($entity);
            $em -> flush();

            $this -> get('session') -> getFlashBag() -> add('newsletterSubscribed', 'Thank you for subscribing!');

        }

        return $this -> render('DbeDonaciBundle:UnderConstruction:index.html.twig', array('entity' => $entity, 'form' => $form -> createView(), ));
    }

我还在 config.yml 文件中启用了验证:

framework:
    validation:      { enable_annotations: true }

知道什么会导致这个错误吗?

【问题讨论】:

  • 请记住,尽管 Windows 的路径和 PHP 标识符(类名)不区分大小写,但 Linux 文件路径却不是。将email 更改为Email 应该没问题。

标签: validation symfony constraints


【解决方案1】:

如果您在 linux 系统上工作,则区分大小写。

'Symfony\Component\Validator\Constraints\email'

'Symfony\Component\Validator\Constraints\Email'

否则自动加载器找不到文件和类。

【讨论】:

  • 我需要一个名为电子邮件的实体吗?我需要将 use 声明放在哪里?
  • 我不知道你在哪里实现了你的约束;)有一些可能性可以做到这一点。搜索约束并更改它。
  • 我在 Newsletter 控制器中实现了它(使用 Symfony\Component\Validator\Constraints\email;),但如果我写它是否区分大小写,它没有任何区别。还是同样的错误,我想我理解有问题……如果你看看我的代码,是不是缺少了什么?
  • 您清除缓存了吗?错误说他找不到课程,那是因为它不正确。您应该阅读手册以了解约束。您应该在 Form 类型或 yml 文件中实现该约束。
  • 这是我的表单代码,它看起来很好,不是吗?使用 Symfony\Component\Form\AbstractType;使用 Symfony\Component\Form\FormBuilderInterface;使用 Symfony\Component\OptionsResolver\OptionsResolverInterface;使用 Symfony\Component\Validator\Constraints\Email;类 NewsletterType 扩展 { public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('email', 'email', array( "required"=>true) ); }
【解决方案2】:

确实是区分大小写的错误,但我改错了。

src/DbeDonaciBundle/Resources/config/validation.yml

Dbe\DonaciBundle\Entity\Newsletter:
    properties:
        email:
            -  Email :
                message: The email "{{ value }}" is not a valid email.
                checkMX: true

【讨论】:

    猜你喜欢
    • 2014-04-11
    • 2011-10-19
    • 2012-08-28
    • 2012-12-24
    • 2018-02-07
    • 2022-01-06
    • 2013-03-11
    • 2015-03-24
    • 1970-01-01
    相关资源
    最近更新 更多