2011-02-01 3 views
1

Доктрина документации объясняет, что для того, чтобы добавить запись фильтра доктрины, вы должны unshiftFilter() к Установке определения таблицы() метод:Как определить фильтр записи доктрины в schema.yml symfony?

 
public function setUp(){ 
    parent::setUp(); 
    $this->unshiftFilter(new MyDoctrineRecordFilter()); 
} 

В случае Symfony, что должен идти в базовый класс (т.е./Библиотека/model/doctrine/base/BaseArticle.class.php), но поскольку symfony перезаписывает базовые классы каждый раз, когда я перестраиваю схему - как (или где) я должен определить этот фильтр, чтобы он появился там после запуска команды doctrine: build? Я не могу найти ссылку в doc или internet о ее определении в schema.yml.

Спасибо.

ответ

0

Мы используем доктрину 1.2.4. Кажется, что нет эквивалента yaml-схемы

0

Как вы узнали, никогда не вносите никаких изменений в автоматически генерируемые базы классов. Ваши изменения будут просто уничтожены.

Вместо этого вы найдете дочерние классы, которые расширяют базовые классы. Symfony/Doctrine не будет касаться тех, которые были созданы (за исключением symfony doctrine:clean-model-files). В вашем случае, обратите внимание на:

/lib/model/doctrine/Article.class.php 

Форма Фильтры определяются аналогично по другому пути:

/lib/filter/doctrine/base/BaseArticleFormFilter.class.php 
/lib/filter/doctrine/ArticleFormFilter.class.php 
+0

Благодарим за быстрый ответ. Я знаю об этом. Попробовал добавить функцию установки в Article.class.php: public function setUp() { \t \t parent :: setUp(); $ this-> unshiftFilter (новый MyDoctrineRecordFilter()); } , но затем я получаю ошибку при попытке перестроить схему: Fatal error: вызов функции-члена evictAll() для не-объекта в C: \ projects \ myproject \ lib \ vendor \ symfony \ lib \ plugins \ sfDoctrinePlugin \ lib \ vendor \ doctrine \ Doctrine \ Connection.php в строке 1239. Обратите внимание, что MyDoctrineRecordFilter не является фильтром формы, а фильтром записи доктрины (расширяет Doctrine_Record_Filter). – dsomnus