global $phpbb_admin_path; anders einbinden.
- 3Di
- Mitglied
- Beiträge: 106
- Registriert: 12.03.2010 14:33
- Wohnort: Milano 🇮🇹 Frankfurt 🇩🇪
- Kontaktdaten:
Re: global $phpbb_admin_path; anders einbinden.
Nein. Vertrauen Sie mir, nehmen Sie mein Beispiel.
Die Verwendung des "container" auf diese Weise ist in einem "controller" einfach nicht erlaubt (absurd), verwenden Sie die "service", wie sie verwendet werden sollten.
Die Verwendung des "container" auf diese Weise ist in einem "controller" einfach nicht erlaubt (absurd), verwenden Sie die "service", wie sie verwendet werden sollten.
Re: global $phpbb_admin_path; anders einbinden.
@3Di
Ihre zweite Option funktioniert perfekt, vielen Dank.
Ich hab bei meinen Extensionen bisher noch mit
Ihre zweite Option funktioniert perfekt, vielen Dank.
Ich hab bei meinen Extensionen bisher noch mit
contrloller
gearbeitet, ist für mich auch Neuland.Re: global $phpbb_admin_path; anders einbinden.
Ja das Versuch ich ja aber wenn ich das
in die Service.yml meiner extension schreibe und dann
nur das:
in den Contructor des controllers meldet der beim aufruf das hier:
Ich hab das dann so gemacht:
Dann kommt das mit weiser seite:
irgendwas fehl noch. ich komm nur nicht drauf was. Tut mir leid wenn ich so dumm frage.
und noch eine Info ja ich bin im Validierungsteam aber nur zum testend er erweiterung. Code testen tu ich so eigentlich nciht weil mir da (leider) noch die Erfahrung fehlt. Daher verstehe ich auch nicht immer direkt alles.
Code: Alles auswählen
- '@path_helper'
nur das:
Code: Alles auswählen
$this->admin_path = $path_helper->get_phpbb_root_path() . $path_helper->get_adm_relative_path();
Code: Alles auswählen
[phpBB Debug] PHP Notice: in file [ROOT]/ext/chris1278/cookie/controller/admin_controller.php on line 43: Undefined variable: path_helper
Fatal error: Uncaught Error: Call to a member function get_phpbb_root_path() on null in C:\xampp\73\htdocs\tf1\ext\chris1278\cookie\controller\admin_controller.php:43 Stack trace: #0 C:\xampp\73\htdocs\tf1\cache\production\container_dbdbe80dc7030ae9bd39ee30cca82130.php(1316): chris1278\cookie\controller\admin_controller->__construct(Object(phpbb\config\db), Object(phpbb\language\language), Object(phpbb\log\log), Object(phpbb\request\request), Object(phpbb\template\twig\twig), Object(phpbb\user), Object(phpbb_cache_container), 'php', './../', Object(phpbb\path_helper)) #1 C:\xampp\73\htdocs\tf1\vendor\symfony\dependency-injection\Container.php(306): phpbb_cache_container->getChris1278_Cookie_Admin_ControllerService() #2 C:\xampp\73\htdocs\tf1\ext\chris1278\cookie\acp\main_module.php(22): Symfony\Component\DependencyInjection\Container->get('chris1278.cooki...') #3 C:\xampp\73\htdocs\tf1\includes\functions_module.php(676): chris1278\cookie\acp\main_module->main('\\chris1278\\cook...', 'settings') #4 C:\xampp\73\htdocs\tf1\a in C:\xampp\73\htdocs\tf1\ext\chris1278\cookie\controller\admin_controller.php on line 43
Code: Alles auswählen
public function __construct(
\phpbb\config\config $config,
\phpbb\language\language $language,
\phpbb\log\log $log,
\phpbb\request\request $request,
\phpbb\template\template $template,
\phpbb\user $user,
$phpbb_container,
$path_helper,
$php_ext
)
{
$this->config = $config;
$this->language = $language;
$this->log = $log;
$this->request = $request;
$this->template = $template;
$this->user = $user;
$this->php_ext = $php_ext;
$this->md_manager = $phpbb_container->get('ext.manager')->create_extension_metadata_manager('chris1278/cookie');
$this->admin_path = $path_helper->get_phpbb_root_path() . $path_helper->get_adm_relative_path();
}
Code: Alles auswählen
Fatal error: Uncaught Error: Call to a member function get_phpbb_root_path() on string in C:\xampp\73\htdocs\tf1\ext\chris1278\cookie\controller\admin_controller.php:44 Stack trace: #0 [internal function]: chris1278\cookie\controller\admin_controller->__construct(Object(phpbb\config\db), Object(phpbb\language\language), Object(phpbb\log\log), Object(phpbb\request\request), Object(phpbb\template\twig\twig), Object(phpbb\user), Object(Symfony\Component\DependencyInjection\ContainerBuilder), 'php', './../', Object(phpbb\path_helper)) #1 C:\xampp\73\htdocs\tf1\vendor\symfony\dependency-injection\ContainerBuilder.php(1176): ReflectionClass->newInstanceArgs(Array) #2 C:\xampp\73\htdocs\tf1\vendor\symfony\dependency-injection\ContainerBuilder.php(634): Symfony\Component\DependencyInjection\ContainerBuilder->createService(Object(Symfony\Component\DependencyInjection\Definition), Array, true, 'chris1278.cooki...') #3 C:\xampp\73\htdocs\tf1\vendor\symfony\dependency-injection\ContainerBuilder.php(588): Symfony\Component\DependencyI in C:\xampp\73\htdocs\tf1\ext\chris1278\cookie\controller\admin_controller.php on line 44
und noch eine Info ja ich bin im Validierungsteam aber nur zum testend er erweiterung. Code testen tu ich so eigentlich nciht weil mir da (leider) noch die Erfahrung fehlt. Daher verstehe ich auch nicht immer direkt alles.
Zuletzt geändert von chris1278 am 22.01.2022 22:10, insgesamt 1-mal geändert.
- 3Di
- Mitglied
- Beiträge: 106
- Registriert: 12.03.2010 14:33
- Wohnort: Milano 🇮🇹 Frankfurt 🇩🇪
- Kontaktdaten:
Re: global $phpbb_admin_path; anders einbinden.
Ich bin sicher, dass Kirk Ihnen helfen wird, der "constructor" ist falsch.
Außerdem halte ich es für besser, den Umgang mit GitHub zu erlernen, der in den Grundzügen wirklich einfach ist, als ein nützliches Werkzeug, um den Code im Falle einer Hilfeleistung überwachen zu können.

Außerdem halte ich es für besser, den Umgang mit GitHub zu erlernen, der in den Grundzügen wirklich einfach ist, als ein nützliches Werkzeug, um den Code im Falle einer Hilfeleistung überwachen zu können.

Re: global $phpbb_admin_path; anders einbinden.
Ok aber ich versteh nicht was genau da falsch sein soll. Aber mal schauen was Kirk mir da für einen Tip gibt.
@edit
ich denke ich habs hinbekommen.
Also meine Lösung ist jetzt so:
in der Service.yml steht das hier drin:
Mein constructor sieht jetzt so aus:
Ich hab sogar hinbekommen die Ext daten aus dem Extmanager ohne container zu laden.
@edit
ich denke ich habs hinbekommen.
Also meine Lösung ist jetzt so:
in der Service.yml steht das hier drin:
Code: Alles auswählen
chris1278.cookie.admin.controller:
class: chris1278\cookie\controller\admin_controller
arguments:
- '@ext.manager'
- '@path_helper'
- '@config'
- '@language'
- '@log'
- '@request'
- '@template'
- '@user'
- '%core.root_path%'
- '%core.php_ext%'
Code: Alles auswählen
protected $extension_manager;
protected $path_helper;
protected $config;
protected $language;
protected $log;
protected $request;
protected $template;
protected $user;
protected $root_path;
protected $php_ext;
protected $u_action;
public function __construct(
\phpbb\extension\manager $ext_manager,
\phpbb\path_helper $path_helper,
\phpbb\config\config $config,
\phpbb\language\language $language,
\phpbb\log\log $log,
\phpbb\request\request $request,
\phpbb\template\template $template,
\phpbb\user $user,
$root_path,
$php_ext
)
{
$this->config = $config;
$this->language = $language;
$this->log = $log;
$this->request = $request;
$this->template = $template;
$this->user = $user;
$this->php_ext = $php_ext;
$this->root_path = $root_path;
$this->md_manager = $ext_manager->create_extension_metadata_manager('chris1278/cookie');
$this->admin_path = $path_helper->get_phpbb_root_path() . $path_helper->get_adm_relative_path();
}
Zuletzt geändert von chris1278 am 23.01.2022 00:16, insgesamt 1-mal geändert.
- 3Di
- Mitglied
- Beiträge: 106
- Registriert: 12.03.2010 14:33
- Wohnort: Milano 🇮🇹 Frankfurt 🇩🇪
- Kontaktdaten:
Re: global $phpbb_admin_path; anders einbinden.
Genau das wollte ich, dass Sie durch gezielte Beratung Appetit bekommen.
Das klingt gut, bravo.

Das klingt gut, bravo.
Re: global $phpbb_admin_path; anders einbinden.
Also ich hoffe das ist so richtig. aber ich habe immer noch nicht verstanden was bzw. warum der constructor falsch sein sollte. ist den das jetzt wenigstens richtig? zumindest funktioniert das so ohne den container.
- 3Di
- Mitglied
- Beiträge: 106
- Registriert: 12.03.2010 14:33
- Wohnort: Milano 🇮🇹 Frankfurt 🇩🇪
- Kontaktdaten:
Re: global $phpbb_admin_path; anders einbinden.
3Di hat geschrieben: 23.01.2022 00:16 Genau das wollte ich, dass Sie durch gezielte Beratung Appetit bekommen.![]()
Das klingt gut, bravo.
Re: global $phpbb_admin_path; anders einbinden.
Ich hab mal ne frage ich bin zu testzwecken erstmal auch nur lokal folgendes am ausprobieren. Ich würde mittels ext.php bei einer meiner extensions was in der datenbank ändern. Es geht sich um meine Extension [3.3] Opt-In Cookie Manager by klaro Script
Da ändern sich schon mal die bbcodes. Das ist ja auch kein problem beim update der Extension ist das kein Problem. Nur bei der Deinstallation. Ich habe in der Nächsten Version schon das so eingerichtet das die bbcodes die durch meine Ext erstellt werden auch nach der Deinstallation weiter funktionieren. Dafür musste ich nur die html ersetzung bei der deinstallation ändern in der migration. Das auch net das problem. Manchmal müssen html ersetzungen ja angepasst werden. Das Problem ist da ich die Ext in der Datenbank von com haben sind eigentlich änderungen in migrationsdateien verboten. Klar ich könnte die deinstallationsschritte der migrationsdateien immer anpassen. Aber der weg über die ext.php finde ich da sinnvoller.
Ich habe das Grundprinzip hinbekommen. Hier mal mein Code den ich in der ext.php dafür nutze:
Das problem was ich habe ist das hier:
Wie kann ich das $table_prefix nutzen ohne den befehl global zu benutzen. ich würde das gern mittels container lösen in etwa so:
Nur hab ich leider den container nicht gefunden welchen ich dafür laden muss.
Da ändern sich schon mal die bbcodes. Das ist ja auch kein problem beim update der Extension ist das kein Problem. Nur bei der Deinstallation. Ich habe in der Nächsten Version schon das so eingerichtet das die bbcodes die durch meine Ext erstellt werden auch nach der Deinstallation weiter funktionieren. Dafür musste ich nur die html ersetzung bei der deinstallation ändern in der migration. Das auch net das problem. Manchmal müssen html ersetzungen ja angepasst werden. Das Problem ist da ich die Ext in der Datenbank von com haben sind eigentlich änderungen in migrationsdateien verboten. Klar ich könnte die deinstallationsschritte der migrationsdateien immer anpassen. Aber der weg über die ext.php finde ich da sinnvoller.
Ich habe das Grundprinzip hinbekommen. Hier mal mein Code den ich in der ext.php dafür nutze:
Code: Alles auswählen
public function purge_step($old_state)
{
$ext_manager = $this->container->get('ext.manager');
$db = $this->container->get('dbal.conn');
global $table_prefix;
if ($ext_manager->is_enabled('chris1278/cookie'))
{
$sql_ary = [
"UPDATE " . $table_prefix . 'bbcodes' . " SET bbcode_tpl = 'html-ersetzung' WHERE bbcode_tag ='bbcodename'",
];
foreach ($sql_ary as $sql)
{
$db->sql_query($sql);
}
}
return parent::purge_step($old_state);
}
Code: Alles auswählen
global $table_prefix;
Code: Alles auswählen
$table_prefix = $this->container->get('containername');