Проверка на уровне модели в Doctrine, Symfony - PullRequest
2 голосов
/ 19 марта 2010

У меня есть 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. Я создал модульный тест для проверки проверки минимальной длины и обнаружил, что проверка не работает.

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

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

Спасибо, Эндри

Ответы [ 2 ]

5 голосов
/ 19 марта 2010

Я нашел это.

Проверка 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 голос
/ 29 октября 2011

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

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

all:
  doctrine:
    param:
      attributes:
        validate: validate_all
...