2010-03-19 2 views
2

У меня есть schema.yml, содержащее что-то похоже на следующее:проверки модели слоя в Учении, Symfony

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

Я определяю MINLENGTH имени столбца, чтобы быть 3. Я создал модульный тест для проверки проверка минимальной длины, и я узнал, что проверка не работает.

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

Может кто-нибудь сказать мне, что может быть проблемой здесь?

Спасибо, Андрее

ответ

5

Я нашел его.

проверка Доктрины выключена по умолчанию, так что вы должны включили его, используя следующий код:

$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

Ответ Андрее работает, но есть другой, немного более простой способ включить проверку Доктрины.

Добавьте это в ваш databases.yml конфигурационный файл:

all: 
    doctrine: 
    param: 
     attributes: 
     validate: validate_all 
Смежные вопросы