Heim > Artikel > Backend-Entwicklung > Wie liest Symfony Konfigurationsinformationen?
Zum Beispiel die Standardkonfiguration der Paging-Klasse
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>
Ich habe eine Funktion im Controller angepasst, um zu sehen, welche Parameter vorhanden sind
Ich habe festgestellt, dass sich einige Konfigurationsinformationen im ParameterBag befinden und andere nicht.
Zum Beispiel:
$this->getParameter('knp_paginator.page_range') hat einen Wert von 5
$this ->getParameter ('knp_paginator.default_options') meldet direkt einen Fehler
Ich weiß nicht, was los ist
Was soll ich schreiben, wenn ich knp_paginator.default_options.page_name lesen möchte
Zum Beispiel die Standardkonfiguration der Paging-Klasse
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>
Ich habe eine Funktion im Controller angepasst, um zu sehen, welche Parameter vorhanden sind
Ich habe festgestellt, dass sich einige Konfigurationsinformationen im ParameterBag befinden und andere nicht.
Zum Beispiel:
$this->getParameter('knp_paginator.page_range') hat einen Wert von 5
$this ->getParameter ('knp_paginator.default_options') meldet direkt einen Fehler
Ich weiß nicht, was los ist
Was soll ich schreiben, wenn ich knp_paginator.default_options.page_name lesen möchte
Nachdem ich die dem Bundle entsprechende KnpPaginatorExtension-Klasse überprüft hatte, stellte ich fest, dass die dem Bundle entsprechenden default_options nicht die setParameter-Methode des Containers für die Parameterdeklaration verwendeten und daher nicht über die getParameter-Methode des Containers (falls vorhanden) abgerufen werden können Wenn ein Experte herausfindet, wie man es erhält, sagen Sie es mir bitte).
Wenn Sie relevante Parameter erhalten möchten, können Sie dies tun.
Deklarieren Sie die entsprechenden Parameter inparameters.yml:
<code>knp_paginator_options: page_name: custom_page_name sort_field_name: sort sort_direction_name: direction distinct: true</code>
Dann verwenden Sie dies in 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>
Extrahieren Sie einfach die Parameter in die Datei „parameters.yml“ und weisen Sie dann das gesamte Parameterobjekt „default_options“ zu. Wenn Sie dann den entsprechenden Parameterwert erhalten möchten, können Sie direkt $this->getParameter( verwenden. 'knp_paginator_options')['page_name'] erhalten.
Ich hoffe, es hilft dir~
Symfony
Konfiguration falsch! Zuerst muss, wie der Name der Methode $this->getParameter()
vermuten lässt, der gelesene Inhalt aus den Parametern unter dem Feld parameters
bestehen. Die Parameter, die Sie lesen möchten, befinden sich nicht unbedingt im Feld parameters
. Weitere Untersuchungen sind erforderlich (Sie sollten zunächst die offizielle Dokumentation auf diesbezügliche Anweisungen prüfen, andernfalls lesen Sie weiter).
Zweitens KnpPaginatorBundle
Die Konfiguration dieses Drittanbieters Bundle
wird über diese Klasse geladen, bei der es sich um die Dependency-Injection-Erweiterungsklasse (Bundle
) Dependency Injection (DI) Extension
von KnpBundlePaginatorBundleDependencyInjectionKnpPaginatorExtension
handelt. Der folgende Code ist ein Auszug aus der load
-Methode dieser Klasse.
<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>
Anhand des obigen Codes können Sie sehen, dass dieser Bundle
insgesamt vier Parameter definiert. Sie können diese vier Parameter wie folgt über die $this->getParameter()
-Methode erhalten:
<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>
Abschließend können wir die anderen Parameter nicht über die Bundle
-Methode abrufen, da der $this->getParameter()
-Autor sie den Entwicklern nicht in Form von Parametern in der Dependency-Injection-Erweiterungsklasse zur Verfügung gestellt hat.
Relevante Dokumentlinks lauten wie folgt: So laden Sie die Servicekonfiguration in ein Bundle