예를 들어 페이징 클래스의 기본 구성
knp_paginator:
<code>page_range: 5 default_options: page_name: page111 # 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:sliding.html.twig # sliding pagination controls template sortable: KnpPaginatorBundle:Pagination:sortable_link.html.twig # sort link template </code>
어떤 매개변수가 있는지 확인하기 위해 컨트롤러의 기능을 맞춤설정했습니다
parameterBag에 일부 구성 정보가 있고 일부는 없는 것을 발견했습니다.
예:
$this->getParameter('knp_paginator.page_range')의 값은 5
$this입니다. ->getParameter('knp_paginator.default_options')가 직접 오류를 보고합니다
무슨 일인지 모르겠습니다
knp_paginator.default_options.page_name을 읽으려면 어떻게 써야 하나요
예를 들어 페이징 클래스의 기본 구성
knp_paginator:
<code>page_range: 5 default_options: page_name: page111 # 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:sliding.html.twig # sliding pagination controls template sortable: KnpPaginatorBundle:Pagination:sortable_link.html.twig # sort link template </code>
어떤 매개변수가 있는지 확인하기 위해 컨트롤러의 기능을 맞춤설정했습니다
parameterBag에 일부 구성 정보가 있고 일부는 없는 것을 발견했습니다.
예:
$this->getParameter('knp_paginator.page_range')의 값은 5
$this입니다. ->getParameter('knp_paginator.default_options')가 직접 오류를 보고합니다
무슨 일인지 모르겠습니다
knp_paginator.default_options.page_name을 읽으려면 어떻게 써야 하나요
Bundle에 해당하는 KnpPaginatorExtension 클래스를 확인한 결과, Bundle에 해당하는 default_options가 매개변수 선언에 컨테이너의 setParameter 메서드를 사용하지 않아 컨테이너의 getParameter 메서드를 통해 얻을 수 없는 것을 발견했습니다(있는 경우). 전문가가 그것을 얻는 방법을 알아내면 알려주세요.)
관련 매개변수를 얻으려면 이렇게 하면 됩니다.
parameters.yml에서 해당 매개변수를 선언합니다.
<code>knp_paginator_options: page_name: custom_page_name sort_field_name: sort sort_direction_name: direction distinct: true</code>
그런 다음 config.yml에서 이것을 사용하세요
<code>knp_paginator: page_range: 5 default_options: "%knp_paginator_options%" template: pagination: KnpPaginatorBundle:Pagination:sliding.html.twig # sliding pagination controls template sortable: KnpPaginatorBundle:Pagination:sortable_link.html.twig # sort link template</code>
매개변수를 매개변수.yml 파일로 추출한 다음 전체 매개변수 개체를 default_options에 할당하면 됩니다. 그런 다음 해당 매개변수 값을 얻으려면 $this->getParameter(를 직접 사용할 수 있습니다. 'knp_paginator_options')['page_name']을 얻었습니다.
도움이 되셨으면 좋겠습니다~
Symfony
구성에 대한 이해가 잘못되었습니다! 먼저 $this->getParameter()
메소드 이름에서 알 수 있듯이 읽어오는 내용은 parameters
필드 아래의 매개변수여야 합니다. 읽으려는 매개변수가 반드시 parameters
필드 아래에 있을 필요는 없습니다. 추가 조사가 필요합니다(먼저 공식 문서에서 이와 관련된 지침을 확인해야 하며, 그렇지 않은 경우 계속 읽어보세요).
둘째, KnpPaginatorBundle
이 타사 Bundle
의 구성은 Bundle
의 종속성 주입 확장 클래스(Dependency Injection (DI) Extension
)KnpBundlePaginatorBundleDependencyInjectionKnpPaginatorExtension
인 이 클래스를 통해 로드됩니다. 다음 코드는 이 클래스의 load
메서드에서 발췌한 것입니다.
<code>$container->setParameter('knp_paginator.template.pagination', $config['template']['pagination']); $container->setParameter('knp_paginator.template.filtration', $config['template']['filtration']); $container->setParameter('knp_paginator.template.sortable', $config['template']['sortable']); $container->setParameter('knp_paginator.page_range', $config['page_range']);</code>
위의 코드를 보면, 이 Bundle
는 총 4개의 매개변수를 정의하고 있는 것을 알 수 있습니다. $this->getParameter()
메소드를 통해 이 4개의 매개변수를 얻을 수 있습니다.
<code>$this->getParameter('knp_paginator.template.pagination'); $this->getParameter('knp_paginator.template.filtration'); $this->getParameter('knp_paginator.template.sortable'); $this->getParameter('knp_paginator.template.page_range');</code>
마지막으로 다른 매개변수는 Bundle
작성자가 종속성 주입 확장 클래스에서 매개변수 형태로 개발자에게 노출하지 않았기 때문에 $this->getParameter()
메서드를 통해 얻을 수 없습니다.
관련 문서 링크는 다음과 같습니다. 번들 내부에 서비스 구성을 로드하는 방법