我希望获得有关如何将第三方软件包添加到现有服务控制器的帮助,特别是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->...
答案 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
命令时,它会列出所有可用服务和相应的类。非常有帮助。