Итак, у меня есть следующий фильтр:
class ClientFilter extends SQLFilter
{
public function addFilterConstraint(ClassMetadata $targetEntity, $targetTableAlias)
{
return $targetTableAlias.'client_id = '. $this->getParameter('client_id');
}
}
и в моем контроллере:
$em = $this->get('doctrine.orm.default_entity_manager');
$filter = $em->getFilters()->enable('client_filter');
var_dump($em->getFilters()->isEnabled('client_filter'));
он распечатывает bool(true), что означает, что он включен, но когда я смотрю на команды sql доктрины из профилировщика Symfony, я не вижу client_id в статусе WHERE
И я не могу установить его глобально, потому что он мне нужен только после входа в систему. Возникает вопрос, как я могу проверить, работает ли фильтр? и другой побочный вопрос будет: если я установил его глобально, есть ли способ заставить его работать только после входа в систему, потому что таблица пользователей не имеет client_id и выдает ошибку, поскольку идентификатор клиента добавляется только после входа в систему, зависит от того, какой пользователь будет авторизоваться.
p.s я добавляю client_id в сеанс после входа в систему!




Я отвечаю на это, так как я был таким отвагой
В коде отсутствуют 2 вещи:
- $filter->setParameter('client_id',1); // 1 i usually get it from session
- and the actual call to some function to call a db table after that code i had nothing applied but the rendering of twig template.
код в контроллере теперь выглядит так:
$this->get('somerepository')->findOneById(1);