Прокси-классы Doctrine 2, ломающие ACL Symfony2 - PullRequest
7 голосов
/ 19 сентября 2011

При попытке запустить findAcl () для сущности с существующей записью в таблице acl_classes, сгенерированной init: acl, я получаю AclNotFoundException.

Тестирование с помощью createAcl () для рассматриваемого объекта перед вызовом findAcl() показывает новую запись в acl_classes для прокси-класса того же типа, и операция завершается успешно.

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

1 Ответ

8 голосов
/ 08 июня 2012

Я просто отвечаю на это, потому что мне было трудно найти решение, и это был первый результат в Google для меня.

Да, это неправильно, и это известная ошибка для Symfony2.

Джонатан Ингрэм решил эту проблему и недавно написал статью об этом: http://jonathaningram.com.au/2012/01/13/overriding-the-objectidentityretrievalstrategy-to-check-if-a-domain-object-is-a-doctrine-proxy/

Он создал свою собственную стратегию поиска идентификаторов объектов, чтобы переопределить значение по умолчанию, и зарегистрировал ее в services.xml.(см. пост выше).На самом деле это довольно простое и понятное решение, мне немного стыдно, я сам не понял:)

В symfony2.1 это больше не проблема, см .: https://github.com/symfony/symfony/pull/3826

...