Übersetzen von Pfaden in routing.yml

7

Wie übersetzen Sie den Pfadabschnitt einer Modulroute?

Zum Beispiel haben Sie:

module_name.my_route_name:
  path: '/path/to/content'
  defaults:
    _controller: \Drupal\module_name\Controller\MyController

Wie kann ich / es / ruta-de-acceso / a / contenido auf denselben Routennamen verweisen lassen?

IslandDev
quelle

Antworten:

7

Soweit ich weiß (jemand, korrigiere mich, wenn ich falsch liege!), Ist dies im Routing-System nicht möglich. Sie können jedoch einen Pfadalias hinzufügen und "/ ruta-de-acceso / a / contenido" zu einem Alias ​​in der spanischen Sprache für '/ path / to / content' machen.

Das Problem bei Pfad-Aliasen im Vergleich zu Routen besteht nun darin, dass sie als Inhalt und nicht als Kern oder Konfiguration betrachtet werden. Infolgedessen gibt es (wieder: AFAIK) derzeit keine Möglichkeit, sie zu exportieren und auf einem Server bereitzustellen. Für ein kürzlich durchgeführtes Projekt habe ich das mit einem benutzerdefinierten Code in der Installationsdatei eines benutzerdefinierten Moduls gelöst. Sie können den Code in dieser Github-Übersicht sehen: Drupal 8: Benutzerdefinierte Pfad-Aliase, die in Code exportiert wurden .

Marcvangend
quelle
1
Hey Mann, danke fürs Teilen. Ich sehe genau, wovon Sie sprechen, und ich werde es definitiv umsetzen. Eine Sache, die mir in den Sinn kam, war, die übersetzten Pfade tatsächlich zum Routeneintrag in der Konfigurationsdatei hinzuzufügen. Lesen Sie die Konfigurationsdateien in der Installationsphase und fügen Sie der Datenbank dann Aliase hinzu. Ich weiß nicht, ob das funktionieren kann, aber ich werde es untersuchen. Prost!
IslandDev
Kein Problem! Ich bin damit einverstanden, dass es sinnvoll wäre, die übersetzten Pfade mit Ihren Routendefinitionen zu bündeln. Wenn Sie das schaffen, würde ich gerne Ihren Code sehen!
Marcvangend
1

Ich denke, es ist umgekehrt, es ist die Route, die auf einen Pfad zeigt. Idealerweise könnten Sie nur eine Route haben, die für jede Sprache verwendet wird, und ich nehme an, dass dies mit node / {id} funktioniert. Bei der Verwendung von Aliasen funktionierte ich nur, indem ich eine Route pro Sprache definierte. Überhaupt nicht hübsch.

Übrigens habe ich dann in Twig verwendet {{ path('module_name.my_route_name.' ~ language) }}. Auch überhaupt nicht schön.

dxvargas
quelle
Sie haben Recht damit, was auf was hinweist.
IslandDev