Wie erhalte ich den Routennamen einer Ansichtsseite?

15

In meinem benutzerdefinierten Submit-Handler möchte ich zur URL einer Ansichtsseite umleiten. Nehmen wir an, mein Ansichtsname lautet team und sein Pfad lautet /admin/team. Ich finde heraus, was ich verwenden sollte, $from_state->setRedirect('route');aber als ich es versuchte $from_state->setRedirect('/admin/team');.

David Mcsmith
quelle
Dies ist auch für die statische YAML-Menükonfiguration erforderlich.
Vijaycs85
1
Keine direkte Antwort, aber ich hatte die gleiche Frage zu Links zu einer benutzerdefinierten Ansicht in einem anderen benutzerdefinierten Modul. Erstellen Sie daher im Menü der Konfigurationsdatei: MODULE.links.menu.yml einen Knoten mit der Option route, route_name: view.YOUR_CUSTOM_MODULE_CONTAINS_CUSTOM_CONTENT_TYPE.page_1wenn page_1 der Name des Seitenansichtsmodus ist.
Jean-Luc Barat

Antworten:

38

Der korrekte Routenname für die Ansicht lautet view.VIEW_MACHINE_NAME.PAGE_MACHINENAME(mit anderen Worten "view.$view_id.$display_id"). versuche etwas wie folgendes

use \Drupal\Core\Url;

$url = Url::fromRoute('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME');
$form_state->setRedirectUrl($url);

und für deinen Fall

$url = Url::fromRoute('view.team.page_1'); // page_1 is my guess as to your page name, please replace it with your page machine_name

Lean more: So formulieren Sie den Routennamen

Nach @ 4k4 Kommentar können Sie das Formular auch an einen benutzerdefinierten Router mit URL umleiten

brauche nur verwenden $form_state->setRedirectUrl($url)

Yusef
quelle
Diese Antwort ist nicht ganz richtig, da Sie den richtigen Routennamen für die Ansicht erhalten, sodass Sie kein URL-Objekt aus diesem Routennamen erstellen müssen. Sie sollten in der Lage sein, den Routennamen direkt zu verwenden: $form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME');
kbrinner
5

Um kontextbezogene Filter für Ansichten als Parameter zu verwenden, verwenden Sie arg_X, z.

$url = Url::fromRoute('view.team.page_1', ['arg_0' => 1234]);
rémy
quelle
3

Mit dem Webprofiler des Entwicklungsmoduls können Sie die Route einer beliebigen Seite anzeigen .

Neben vielen anderen Funktionen werden auch die Anzahl der auf der Seite durchgeführten DB-Abfragen und die Anforderungszeit angezeigt.

Es ist für Drupal 7 und 8 verfügbar.

Parag
quelle
2

Einfaches Beispiel: Es wird funktionieren :)

use Drupal\Core\Url;
$form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME'); // view.my_view.page_1
Validasan
quelle
Drupal \ Core \ Url muss nicht verwendet werden - Sie verwenden die Route korrekt, sodass die URL-Klasse nicht benötigt wird.
kbrinner
1

Bei Durpal 8 können Sie auch in die "Router" -Datenbanktabelle schauen, um die Umleitungsparameter abzurufen.

Suchen Sie in der Spalte "Name" nach dem entsprechenden Wert und vergleichen Sie ihn mit der Spalte "Pfad".

$from_state->setRedirect('YOUR_DB_VALUE_HERE'); 
Olli Bolli
quelle