Symfony2将第三方软件包添加到服务控制器

时间:2014-09-08 21:42:41

标签: symfony

我希望获得有关如何将第三方软件包添加到现有服务控制器的帮助,特别是KnpSnappyBundle https://github.com/KnpLabs/KnpSnappyBundle

该软件包与composer一起安装,app / AppKernel.php中的registerBundles()函数已更新。

我无法通过其构造函数将捆绑包传递给服务控制器。

1:不确定如何确定使用路径

--SomeController.php file--
...
use Symfony\Component\???\???

class FormDataController
{
    ...
    private $pdf;

2:还不确定如何确定对象类型的名称。

    public function __construct(..., KnpSnappyBundle? $pdf )
    {
        ...
        $this->pdf= $pdf;

        return $this;
    }

3:然后在servives.yml文件中,我将以下参数添加到正确的控制器

- "@knp_snappy.pdf"

完成上述操作后,控制器应该能够执行以下操作来访问捆绑功能,对吗?

$this->pdf->...

1 个答案:

答案 0 :(得分:5)

你为什么这样做?

引用:

  

捆绑包注册两项服务:

     
      
  • knp_snappy.image服务允许您生成图像;
  •   
  • knp_snappy.pdf服务允许您生成pdf文件。
  •   

只需像这样访问它们(如果你使用标准的Symfony控制器):

$this->get('knp_snappy.pdf')->...;
$this->get('knp_snappy.image')->...;

<强>更新

如果您要将knp_snappy.pdf服务注入自定义服务,则应使用Knp\Bundle\SnappyBundle\Snappy\LoggableGenerator类。

--SomeController.php file--
...
use Knp\Bundle\SnappyBundle\Snappy\LoggableGenerator;

class FormDataController
{
    // ... //

    private $pdf;

    public function __construct(..., LoggableGenerator $pdf )
    {
        ...
        $this->pdf = $pdf;

        return $this;
    }

    // ... //

}

运行./app/console container:debug命令时,它会列出所有可用服务和相应的类。非常有帮助。