【发布时间】: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 扩展文件中正确注册?
-
另外,您确定
AppBundle在src目录的根目录中吗? -
你为什么不创建一个你的两个/任何控制器都可以使用的服务类?