Auflösung von Links ist anders

  • Hallo, ich versuche gerade, eine lokale Kopie meiner HP von J3 auf J4 zu migrieren. Dabei stoße ich auf ein Problem mit der Auflösung von Links in einer meiner eigenen MVC-Komponenten.


    Dort habe ich eine Liste mit Einträgen, die man durch Anklicken editieren kann. Dabei wird ein neues Template namens "edit.php" aufgerufen. Hier ist der Aufruf im Quelltext:


    $link = Route::_('index.php?option=com_easyfpu&task=easyfpu.edit&layout=edit&id=' . $row->id);


    In Joomla 3 wurde dieser Link aufgelöst nach


    https://.../index.php/de/easyfpe/easyfpe-web/easyfpe-app?view=easyfpu&layout=edit&id=15


    In Joomla 4 wird er aufgelöst nach


    https://.../index.php/de/component/easyfpu/?view=easyfpu&layout=edit&id=15


    Leider führt diese Auflösung dazu, dass ein falscher Seiten-Stil angewendet wird. Wenn ich den ursprünglichen Link in die Browseradresszeile kopiere, funktioniert es genauso wie es sollte.


    Wie bekomme ich alte Linkauflösung wieder hin? Die SEO-Einstellungen sind auf beiden Seiten identisch (Suchmaschinenfreundliche URL ja, alles andere nein).


    Vielen Dank!

  • OK, ich habe den Link oben gelesen und dann noch diesen:

    https://github.com/joomla/joomla-cms/discussions/35621


    Das scheint tatsächlich die Ursache für meine Problem zu sein, zumindest liest sich das so.


    Aber ich stecke nicht so tief drin in Joomla 4, dass ich wüsste, an welcher Stelle ich jetzt die empfohlene public function preprocess(&$query) implementieren sollte.


    Die relevanten Teile meiner default.php, wo die Links erzeugt werden, sehen wie folgt aus:



    In Zeile 44 wird der entsprechende Link generiert. Muss ich jetzt einen eigenen Override zu /libraries/src/Router/SiteRouter.php kreieren und dort preprocess() implementieren?

  • Hi, I have meanwhile worked on this topic with the following result:


    I implemented my own router, see code below, but now I do not know how to register it correctly.


    This is the router:

    Then I found some tutorial on how to register this router in my provider.php:

    In line 36, I try to register the router, however, this function (setRouterFactory) does not exist. So how do I correctly register my router?