【问题标题】:symfony: how to pass to uploaded bundle its own pathsymfony:如何将自己的路径传递给上传的包
【发布时间】:2017-07-07 19:31:28
【问题描述】:

我正在使用 symfony 3.3

我创建了一个包,我通过 composer 将它安装到我的应用程序中的 vendor/ 中。我有这个包需要一些我通过依赖注入注入的 yml 文件。到目前为止一切正常。但我也有一个 yml 文件已经在这个包中,这个包必须知道这个(他自己的)文件的路径。

目前我在我的包的一个类中有这个

protected const LOCAL_FILE = __DIR__.'/../Resources/translations/ru.yml';

它工作得很好,但我认为这不是一个合适的解决方案。我尝试将%kernel.root_dir% 传递给此类,但我仍然无法猜测整个路径。

我应该如何做到最好?

更新:按照 zerkms 的建议,我得到了调用此方法的结果,方法如下:

  my.translator:
      ...
      calls:
          - method: configure
            arguments:
               ...
               - '@kernel'

还有locateResource的部分

 protected const LOCAL_FILE = '@MyBundle/Resources/translations/ru.yml';
  ....
  ....
  $this->kernel->locateResource(self::LOCAL_FILE)

【问题讨论】:

  • 检查内核的locateResource 方法。 api.symfony.com/3.3/Symfony/Component/HttpKernel/…
  • @zerkms 我应该将什么传递给services.yml 中的类的构造函数才能访问此方法?
  • @kernel? ........
  • 有效!那是!你能回答这个建议,以便我接受吗?
  • 我有。您能否也说明一下您是如何调用该方法的,以便答案反映您的情况?

标签: php symfony symfony-3.3


【解决方案1】:

您可能使用过Symfony\Component\HttpKernel::locateResource() 方法。

并且内核对象可以通过容器中的@kernel id 获得。

【讨论】:

  • 成功了。我更新了我的帖子以展示我是如何做到的
  • @user7808407 是的,但是你将什么传递给locateResource
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多