【问题标题】:Function as service in Symfony2Symfony2 中的服务功能
【发布时间】:2015-08-22 17:42:09
【问题描述】:

我在数据库中存储了一个字符串,我想从我的应用程序的不同位置访问该字符串。我发现最好的解决方案是创建一个从数据库中获取该字符串并将其注册为服务的函数。

功能:

public function shopUrlAction()
{ 
  return new Response($this->getDoctrine()->getRepository('AppBundle:Settings')->find(1)->getName());
}

service.yml

services:
  app.default_controller:
    class: AppBundle\Controller\DefaultController

在其他控制器中的输出:

$return['base_url'] = $this->forward('app.default_controller:shopUrlAction');

不幸的是,我经常得到

CRITICAL - 未捕获的 PHP 异常 Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException: “您请求了一个不存在的服务“app.default_controller”。” 在 /app/bootstrap.php.cache 行 2099 背景: {“异常”:“对象(Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException)”}

我已清除缓存。

【问题讨论】:

  • 你为什么使用$this->forward();?你应该改用$this->get('app.default_controller')->shopUrlAction();
  • 抱歉,我尝试了奇怪的解决方案。使用 $this->get 仍在输出您请求了一个不存在的服务“app.default_controller”
  • 您的文件 service.yml 是否已在您的 DependencyInjection 扩展文件中正确注册?
  • 另外,您确定AppBundlesrc 目录的根目录中吗?
  • 你为什么不创建一个你的两个/任何控制器都可以使用的服务类?

标签: php symfony


【解决方案1】:

我从您的问题中看到,您使用的是 service.yml 而不是 services.yml(复数形式)。

您应该在 imports 部分的主要 config.yml 中包含您的 service.yml 或使用标准路径 (AppBundle/Resources/config/services.yml)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 2023-03-14
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多