Symfony — как можно добраться до "kernel.project_dir“ из entity?

Для того чтобы получить доступ к значению kernel.project_dir из класса Entity в Symfony, можно использовать сервис parameter_bag, который предоставляет доступ к параметрам, определенным в файле config/packages/parameters.yaml или в других конфигурационных файлах.

Для начала, убедитесь, что вы имеете зависимость parameter_bag в классе Entity. Для этого вы можете внедрить зависимость через конструктор или использовать аннотацию @required.

Пример использования parameter_bag в классе Entity:

use SymfonyComponentDependencyInjectionParameterBagParameterBagInterface;

class MyEntity
{
    private $parameterBag;
    
    public function __construct(ParameterBagInterface $parameterBag)
    {
        $this->parameterBag = $parameterBag;
    }
    
    public function getProjectDir()
    {
        return $this->parameterBag->get('kernel.project_dir');
    }
}

Теперь, когда у вас есть доступ к parameter_bag, вы можете получить значение kernel.project_dir с помощью метода get('kernel.project_dir').

Обратите внимание, что вы должны убедиться, что сервис parameter_bag доступен в контейнере зависимостей. Обычно он уже сконфигурирован по умолчанию, но если он отсутствует, вам необходимо добавить следующую конфигурацию в файл config/services.yaml:

services:
    SymfonyComponentDependencyInjectionParameterBagParameterBagInterface: '@parameter_bag'

Теперь, при создании экземпляра класса MyEntity, Symfony будет автоматически внедрять экземпляр parameter_bag и вы можете использовать метод getProjectDir() для получения значения kernel.project_dir.