为了账号安全,请及时绑定邮箱和手机立即绑定

如何订阅DataTableFactory服务?

如何订阅DataTableFactory服务?

PHP
慕村225694 2021-06-13 10:11:07
我正在尝试在 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服务?替代方案“绕过便利特性并注入服务”是什么意思?
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

我不知道如何订阅服务,但这里是如何注入它。


向控制器添加一个构造函数并注入 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();


查看完整回答
反对 回复 2021-06-19
  • 1 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信