如何在symfony 2中声明帮助程序
我想在我的应用程序中使用自定义助手 我在Bundle/Helper/Myhelper.php中使用创建了文件Myhelper.php如何在symfony 2中声明帮助程序,symfony,Symfony,我想在我的应用程序中使用自定义助手 我在Bundle/Helper/Myhelper.php中使用创建了文件Myhelper.php namespace Project\Bundle\Helper; class Myhelper { public function __construct($doctrine) { $this->doctrine = $doctrine; } function testMyHelper () {
namespace Project\Bundle\Helper;
class Myhelper {
public function __construct($doctrine) {
$this->doctrine = $doctrine;
}
function testMyHelper () {
return "hi";
}
}
我试着在我的控制器中调用它:
$myHelper = $this->get('Myhelper');
但我有以下错误:
在呈现模板期间引发异常(“您已请求不存在的服务“myhelper”。)
我必须在特定的配置文件中声明它吗
Thx您应该在symfony上看到服务的定义。 (请参阅:详细说明了如何实现服务(由容器使用)) 例如:
#app/config/services.yml
服务:
我的助手:
班级:你们班
参数:[@theservicedependents]
您尝试将helper用作服务。如果您想使用静态方法创建helper作为类,那么您的实现将起作用。在您的示例中,您应该将类注册为服务。如何在官方symfony中读取服务。当您调用$controller->get($id)
函数时,它指的是由给定的$id
注册的服务。如果要在控制器中使用此帮助器,则需要将其注册为service.yml
文件中的服务(或用于服务声明的xml、php)
然后你可以调用$this->get('app.helpers.my_helper')
以获取服务实例
如果您不想在controller中使用它,而是想在twig中使用它,则需要将其作为twig扩展注入,并通过依赖项注入注入您的服务:
# app/config/services.yml
services:
app.twig_extension:
class: AppBundle\Twig\AppExtension
public: false
arguments: ['@app_helpers.my_helper']
tags:
- { name: twig.extension }
您可以在symfony中了解更多信息,我需要知道在哪种情况下您想要使用助手 Symfony的结构是永远不需要这种工具。
也许您在项目的概念上有问题,或者您不知道一些工具。最后,我将它用作一种服务,它用于从任何控制器在数据库中填充通知
# app/config/services.yml
services:
app.twig_extension:
class: AppBundle\Twig\AppExtension
public: false
arguments: ['@app_helpers.my_helper']
tags:
- { name: twig.extension }