在我自己的服务中使用 knp_paginator
Posted
技术标签:
【中文标题】在我自己的服务中使用 knp_paginator【英文标题】:Using knp_paginator within my own service 【发布时间】:2017-08-25 07:55:49 【问题描述】:我正在尝试在自己的服务中使用 knp_paginator,但出现此错误
CheckExceptionOnInvalidReferenceBehaviorPass.php 第 58 行中的 ServiceNotFoundException:服务“paginatorservice”依赖于不存在的服务“knp_paginator”。
这是我的服务:
namespace CommonBundle\Service;
use Doctrine\ORM\EntityManager;
class PaginatorService
public function paginate($query, $pageLimit, $pageNumber)
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$query,
$request->query->getInt('page', $pageNumber),
$pageLimit
);
return $pagination;
我的 service.yml:
paginatorservice:
class: CommonBundle\Service\PaginatorService
arguments:
entityManager: [ "@doctrine.orm.entity_manager", "@knp_paginator "]
分页器在我的控制器中工作正常,但我想让它成为服务,以便我可以重用代码。
【问题讨论】:
您的service.yml
中有一个多余的空格,在"@knp_paginator "
中,删除r
和"
之间的空格
【参考方案1】:
您应该将它们注入到您的服务的 __construct 中:
$private $em;
$private $paginator;
public function __contruct($em, $paginator)
$this->em = $em;
$this->$paginator = $paginator;
然后改变:
paginatorservice:
class: CommonBundle\Service\PaginatorService
arguments: [ "@doctrine.orm.entity_manager", "@knp_paginator"]
希望对你有帮助。
【讨论】:
我仍然得到同样的错误,也许我忘记了使用语句或什么? 记住我在问题中评论的空格! 您是否尝试删除缓存?【参考方案2】:我想通了。
在 service.yml 中,我必须传递 3 个参数,“entitymanager”、“knp_paginator”和“request_stack”,因为请求将在服务中使用。
paginatorservice:
class: CommonBundle\Service\PaginatorService
arguments: [ "@doctrine.orm.entity_manager", "@knp_paginator","@request_stack"]
我的服务类现在看起来像这样。
namespace CommonBundle\Service;
use Doctrine\ORM\EntityManager;
use Symfony\Component\HttpFoundation\RequestStack;
class PaginatorService
private $em;
private $paginator;
protected $requestStack;
public function __construct(EntityManager $em, $paginator,RequestStack $requestStack)
$this->em = $em;
$this->paginator = $paginator;
$this->requestStack = $requestStack;
public function paginate($query, $pageLimit, $pageNumber)
$request = $this->requestStack->getCurrentRequest();
$pagination = $this->paginator->paginate(
$query,
$request->query->getInt('page', $pageNumber),
$pageLimit
);
return $pagination;
【讨论】:
以上是关于在我自己的服务中使用 knp_paginator的主要内容,如果未能解决你的问题,请参考以下文章
在我自己的 Web 应用程序中使用 passportjs 管理单点登录 - 共享登录
如何在我自己的自定义视图中重现 iPhone UIScrollView 的轻弹滚动行为?
在我自己的自定义 appSettings 上使用 foreach 所需的代码
websocket 服务器找不到类 mysqli。如何在我自己的 websocket 服务器中使用 mysql 数据库连接? [复制]