如何订阅DataTableFactory服务?

我正在尝试在 Symfony 4.2 中使用DataTablesBundle

有非常好的手册和启动器,但是它与扩展控制器类一起使用。但我试图将它与 AbstractController 类一起使用。

所以我有这样的问题:

服务“ Omines\DataTablesBundle\DataTableFactory”未发现:即使在应用程序的容器存在,容器内“ App\Controller\StaffController”是一个较小的服务定位器,只有知道了“ doctrine”,“ form.factory”,“ http_kernel”,“ parameter_bag”,“ request_stack”,“ router”,“ security.authorization_checker” 、“ security.csrf.token_manager”、“ security.token_storage”、“ serializer”、“ session”和“ twig”服务。尝试改用依赖注入

我找到了一个解决方案,但是我刚刚开始使用 Symfony,所以我还没有真正理解它是关于什么的:

https://github.com/omines/datatables-bundle/commit/cd9b93eac9ef4fd3c1459305c71ca6e2ac0c444e

如果AbstractController改为使用,这是目前推荐的做法,请确保您DataTableFactory自己订阅该 服务。或者,您可以绕过便利特征并通过常规构造函数注入来注入服务

如何订阅DataTableFactory服务?

替代方案“绕过便利特性并注入服务”是什么意思?


慕村225694
浏览 108回答 1
1回答

凤凰求蛊

我不知道如何订阅服务,但这里是如何注入它。向控制器添加一个构造函数并注入 DataTableFactory://use Omines\DataTablesBundle\DataTableFactory;private $factory;public function __construct(    DataTableFactory $factory) {    $this->factory = $factory;}/** * Creates and returns a basic DataTable instance. * * @param array $options Options to be passed * @return DataTable */protected function createDataTable(array $options = []){    return $this->factory->create($options);}/** * Creates and returns a DataTable based upon a registered DataTableType or an FQCN. * * @param string $type FQCN or service name * @param array $typeOptions Type-specific options to be considered * @param array $options Options to be passed * @return DataTable */protected function createDataTableFromType($type, array $typeOptions = [], array $options = []){    return $this->factory->createFromType($type, $typeOptions, $options);}然后你可以像这样使用它:$this->createDateTable();
打开App,查看更多内容
随时随地看视频慕课网APP