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

sco*_*ott 2 symfony

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

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

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

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

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

class FormDataController
{
    ...
    private $pdf;
Run Code Online (Sandbox Code Playgroud)

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

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

        return $this;
    }
Run Code Online (Sandbox Code Playgroud)

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

- "@knp_snappy.pdf"
Run Code Online (Sandbox Code Playgroud)

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

$this->pdf->...
Run Code Online (Sandbox Code Playgroud)

dmn*_*ptr 5

你为什么做这个?

引用:

该捆绑包注册两个服务:

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

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

$this->get('knp_snappy.pdf')->...;
$this->get('knp_snappy.image')->...;
Run Code Online (Sandbox Code Playgroud)

更新:

如果要将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;
    }

    // ... //

}
Run Code Online (Sandbox Code Playgroud)

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