我有一个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
答案 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