Seite 1 von 3

global $phpbb_admin_path; anders einbinden.

Verfasst: 22.01.2022 11:15
von chris1278
So ich bin gerade dabei meine extensions auf controller basis umzustellen.

Ich benutze auch die ein oder andere Verlinkung innerhalb des ACP´s und seis nur um zu den Berechtigungen zu verlinken.

Ich lade sonst immer den admin_path mittel globaler vasriable.

Code: Alles auswählen

global $phpbb_admin_path;
Ich weis wie ich den root_path in der Datei service.yml anmelde:

Code: Alles auswählen

- '%core.root_path%'
Das Problem ist was mus da für den Admin Pfad hin. Oder ist es nur möglich diesen Global zu laden.

Ich hab jetzt in dem Admin Controller in der Display function des Moduls wo diese Verlinkung genutzt wird erstmal das mittels global geladden. Dann funktioniert das auch.

Ich würde aber gern sofern möglich dies ohne die global variable tun. Falls da jemand etwas helfen kann. Oder wenn mir jemand eine extension sagen kann wo man admin path mittels service.yml einbindet dann wäre ich sehr dankbar.

Aber vieleicht ist es ja so das man dies eben nur so kann.

Re: global $phpbb_admin_path; anders einbinden.

Verfasst: 22.01.2022 12:16
von Kirk
Hi
Man kann es schon anders setzen, such mal in den phpBB Dateien nach $this->phpbb_admin_path.

Re: global $phpbb_admin_path; anders einbinden.

Verfasst: 22.01.2022 16:11
von chris1278
Wenn ich das richtig sehe kann man die Variable $phpbb_admin_root nicht als core Element in der service.yml laden. Wenn ich das richtig verstehe wird diese variable in Verbindung mit der core.phpbb_root gebildet und kann nur über global als eigene variable eingebunden werden.

Re: global $phpbb_admin_path; anders einbinden.

Verfasst: 22.01.2022 18:09
von Kirk
Du müsstest es korrekt definieren: https://github.com/phpbb/phpbb/blob/6ca ... r.php#L124

Re: global $phpbb_admin_path; anders einbinden.

Verfasst: 22.01.2022 18:25
von chris1278
Ja hab ich gefunden, aber man kann eben nicht asmin Pfad in Service.yml definieren da es anscheinend kein solches Code event gibt wie beim root_path.

Re: global $phpbb_admin_path; anders einbinden.

Verfasst: 22.01.2022 20:31
von 3Di
Sie können die Konstante PHPBB_ADMIN_PATH nutzen.

Oder verwenden Sie die richtige Konfiguration, zum Beispiel in .yml arguments:

Code: Alles auswählen

    - '@path_helper'
Dann lösen Sie in PHP Constructor den Weg mit

$this->admin_path = $path_helper->get_phpbb_root_path() . $path_helper->get_adm_relative_path();

https://github.com/phpbb/phpbb/blob/6ca ... #L156-L166

https://github.com/phpbb/phpbb/blob/6ca ... er.php#L19

Re: global $phpbb_admin_path; anders einbinden.

Verfasst: 22.01.2022 20:58
von chris1278
Ok ich habs jetzt ohne global hinbekommen. Danke 3di der tip mit der konstante war passend.

Habs jetzt so gelöst:

im Construct dies hier:

Code: Alles auswählen

$this->phpbb_admin_path 	= "{{ PHPBB_ADMIN_PATH }}";
geht natürlich nur wenn ich den root_path in der service.yml mit lade. ohne den - '%core.root_path%' funktioniert die Konstante an der Stelle wo sie eingesetzt wird nicht. Werde mich aber auch mit dem path helper mal auseinandersetzen.

Re: global $phpbb_admin_path; anders einbinden.

Verfasst: 22.01.2022 21:04
von 3Di
Ich habe vergessen, hinzuzufügen, dass die Verwendung von Konstanten jetzt verwerflich ist, jemand, der Teil eines Validierungsteams ist, sollte diese Dinge wissen. Verwenden Sie die zweite Option, sie ist einfach, elegant und angemessen. :wink:

Re: global $phpbb_admin_path; anders einbinden.

Verfasst: 22.01.2022 21:09
von 3Di
chris1278 hat geschrieben: 22.01.2022 20:58 $this->phpbb_admin_path = "{{ PHPBB_ADMIN_PATH }}";
Nicht getestet:
$this->phpbb_admin_path = PHPBB_ADMIN_PATH; ?

Re: global $phpbb_admin_path; anders einbinden.

Verfasst: 22.01.2022 21:32
von chris1278
Ok ich hab das jetzt so eingebunden ohne die service.yml

Code: Alles auswählen

$path_helper 				= $phpbb_container->get('path_helper');
$this->admin_path 			= $path_helper->get_phpbb_root_path() . $path_helper->get_adm_relative_path();
Mit dem Ersten lade ich im Container den Path_helper und definiere damit die Variable. so ist das auch in der skeleton extension eingebunden. dann funktioniert das was in der zweiten zeile steht perfekt.