ビューページのルート名を取得する方法は?


15

カスタム送信ハンドラで、ビューページのURLにリダイレクトします。ビュー名がteamで、パスが/admin/teamであると仮定します。使用する必要があること$from_state->setRedirect('route');がわかりますが、$from_state->setRedirect('/admin/team');エラーでFaced を試したとき、どのようにビュールート名を取得できますか?


これは、静的なYAMLメニュー設定にも必要です。
vijaycs85

1
直接的な応答ではありませんが、別のカスタムモジュールのカスタムビューへのリンクについても同じ質問があったので、設定ファイルメニューで:route_name: view.YOUR_CUSTOM_MODULE_CONTAINS_CUSTOM_CONTENT_TYPE.page_1MODULE.links.menu.ymlは、page_1がページビューモードの名前の場合、ルートオプションでノードを作成し ます。
ジャンリュックバラット

回答:


38

ビューの正しいルート名はview.VIEW_MACHINE_NAME.PAGE_MACHINENAME(別の言葉で"view.$view_id.$display_id")です。次のようなものを試してください

use \Drupal\Core\Url;

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

そしてあなたの場合

$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

リーンもっと:ルート名を定式化する方法

@ 4k4コメントの後、URLを使用してフォームをカスタムルーターにリダイレクトすることもできます

ただ使用する必要があります $form_state->setRedirectUrl($url)


ビューの正しいルート名を取得しているため、この答えは少しずれています。そのため、そのルート名からURLオブジェクトを作成する必要はありません。ルート名を直接使用できるはずです $form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME');
。– kbrinner

5

ビューのコンテキストフィルターをパラメーターとして使用するには、arg_X、feを使用します。

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

3

develモジュールのWebprofilerを使用すると、任意のページのルートを確認できます。

また、他の多くの機能に加えて、ページで行われたDBクエリの数とリクエスト時間も表示します。

Drupal 7および8で利用可能です。


2

簡単な例:動作します:)

use Drupal\Core\Url;
$form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME'); // view.my_view.page_1

Drupal \ Core \ Urlを使用する必要はありません。ルートを正しく使用しているため、URLクラスは必要ありません。
kbrinner

1

Durpal 8の場合は、「ルーター」データベーステーブルも調べて、置換パラメーターを取得できます。

「名前」列で対応する値を探し、パス列と比較します。

$from_state->setRedirect('YOUR_DB_VALUE_HERE'); 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.