Sytrfony中的Doctrine中的模型层验证

时间:2010-03-19 09:57:21

标签: symfony1 doctrine

我有一个schema.yml,其中包含类似于以下内容的内容:

Character:
  tableName: characters 
  actAs: { Timestampable: ~ }
  columns:
    id: { type: integer(4), primary: true, autoincrement: true }
    name: { type: string(255), notnull: true, notblank: true, minlength: 3 }

我将列名的最小长度定义为3.我创建了一个单元测试来测试minlength验证,我发现验证不起作用。

$character = new Character();
$character->set('name', 'Dw');
$t->ok(! $character->isValid()); # This test failed

有人可以告诉我这里可能出现什么问题吗?

谢谢, ANDREE

2 个答案:

答案 0 :(得分:5)

我找到了。

默认情况下,Doctrine的验证已关闭,因此您必须使用以下代码将其启用:

$manager = Doctrine_Manager::getInstance();
$manager->setAttribute(Doctrine::ATTR_VALIDATE, Doctrine::VALIDATE_ALL);

在Symfony中,我将以下代码添加到/config/ProjectConfiguration.class.php

  public function configureDoctrine(Doctrine_Manager $manager) 
  { 
    $manager->setAttribute(Doctrine::ATTR_VALIDATE, Doctrine::VALIDATE_ALL);
  }

答案 1 :(得分:1)

Andree的回答是有效的,但还有其他类似方式可以启用Doctrine的验证。

将其添加到databases.yml配置文件中:

all:
  doctrine:
    param:
      attributes:
        validate: validate_all