[GELÖST] Drupal 8 | "createFromRoute" mit "contextual filters"
am 02.03.2016 - 08:30 Uhr in
Hallo zusammen
Ich arbeite an einem Breadcrumb-Modul für meine News. Ich gebe in der Breadcrumb zusätzlich das Jahr des Newseintrages aus. --> Es ist mit "contextual filters" möglich, nur alle News von Jahr XY anzuschauen (Bsp: /news/2016). Das funktioniert auch wunderbar, wenn man das manuell ins Browser-Adressfeld eingibt.
In meinem Modul arbeite ich mit der Funktion Link::createFromRoute. Dieser Methode kann ich zwar Route-Parameters mitgeben aber diese werden dann als GET-Parameter angehängt z.B. news?year=2016
Damit funktioniert die Filterung von Drupal natürlich nicht, da die contextual filter values mit Slash angegeben werden müssen. Also eben z.B. /news/2016
<?php
//...
$breadcrumb = new Breadcrumb();
$breadcrumb->addLink(Link::createFromRoute($this->t('Home'), '<front>'));
$newsLinkYear = Link::createFromRoute($year, 'view.news.page_news_listing', array('year' => $year)); //erzeugt /news?year=2016 anstatt /news/2016
//...
?>
Gibt es dafür bereits eine Lösung?
Danke und Gruss
Marco
- Anmelden oder Registrieren um Kommentare zu schreiben
routeParameter
am 02.03.2016 - 09:36 Uhr
Moin.
Du versuchst, einen benannten Parameter zu setzen ("year"). Da die Route jedoch keine (bzw. nur automatisch generierte Parameter) hat, funktioniert das nicht. Für jedes View-Argument wird der Route ein Parameter namens
arg_{index}
hinzugefügt, also musst Du einfach anstelle von "year" den Namen "arg_0" verwenden:<?php
$breadcrumb = new Breadcrumb();
$breadcrumb->addLink(Link::createFromRoute($this->t('Home'), '<front>'));
$newsLinkYear = Link::createFromRoute($year, 'view.news.page_news_listing', ['arg_0' => $year]);
?>
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
DANKE!
am 02.03.2016 - 10:20 Uhr
Für jedes View-Argument wird der Route ein Parameter namens
arg_{index}
hinzugefügt, also musst Du einfach anstelle von "year" den Namen "arg_0" verwendenHallo Stefan
Vielen Dank für Deine Antwort! Funktioniert perfekt!! :) :) :)