我一直在关注教程,并且所有说明都表明它完全按照相同的方式完成,但它似乎无法在Symfony 4中运行。有什么我可以忽视或者是捆绑只是不兼容?
我跑了:composer require knplabs/knp-paginator-bundle
由于Flex。它被自动加载到bundles.php
。
将以下内容插入config/services.yaml
:
knp_paginator:
page_range: 5 # default page range used in pagination control
default_options:
page_name: page # page query parameter name
sort_field_name: sort # sort field query parameter name
sort_direction_name: direction # sort direction query parameter name
distinct: true # ensure distinct results, useful when ORM queries are using GROUP BY statements
template:
pagination: KnpPaginatorBundle:Pagination:twitter_bootstrap_v3_pagination.html.twig # sliding pagination controls template
sortable: KnpPaginatorBundle:Pagination:sortable_link.html.twig # sort link template
试图在控制器中使用以下内容:
$paginator = $this->get('knp_paginator');
并收到以下错误:
服务" knp_paginator"找不到:即使它存在于应用程序的容器中,容器内部" App \ Controller \ PhotoController"是一个较小的服务定位器,只知道" doctrine"," form.factory"," http_kernel"," request_stack",&# 34; router"," security.authorization_checker"," security.token_storage"," serializer"," session"和" twig"服务。除非您需要额外的懒惰,否则请尝试使用依赖注入。否则,您需要使用" PhotoController :: getSubscribedServices()"来声明它。
答案 0 :(得分:19)
您必须扩展Controller
而不是AbstractController
类:
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class MyController extends Controller
{
public function myAction()
{
$paginator = $this->get('knp_paginator');
或更好地离开AbstractController
并为您的行动注入knp_paginator
服务:
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Knp\Component\Pager\PaginatorInterface;
class MyController extends AbstractController
{
public function myAction(PaginatorInterface $paginator)
{
$paginator->paginate()...
}
答案 1 :(得分:6)
在我的情况下,我使用AbstractController
并且正如malcolm
所说,直接在您的操作中直接注入服务,即使如此,我多次调用一个方法,我认为覆盖{{ 1}}对我的porpuse更清楚。
getSubscribedServices
答案 2 :(得分:1)
正如文档中所述。您必须扩展基类Controller
类,或使用依赖注入而不是https://symfony.com/doc/current/service_container.html#service-parameters
答案 3 :(得分:0)
在我使用的是symfony 4.3的情况下,我只是将类作为参数注入到方法中,然后就完成了。
.image-container img {
width:auto;
height:100%;
}