Como obter o nome da rota de uma página de visualização?

15

No meu manipulador de envio personalizado, quero redirecionar para um URL da página de visualização, vamos supor que meu nome de exibição seja equipe e seu caminho seja /admin/team, descubro que devo usá-lo, $from_state->setRedirect('route');mas quando tentei $from_state->setRedirect('/admin/team');Diante do erro, como posso obter o nome da rota de exibição?

David Mcsmith
fonte
Isso também é necessário para a configuração estática do menu YAML.
precisa saber é o seguinte
1
Não é uma resposta direta, mas eu tinha a mesma pergunta para vincular a uma visualização personalizada em outro módulo personalizado, portanto, no menu do arquivo de configração: MODULE.links.menu.yml crie um nó com a opção route route_name: view.YOUR_CUSTOM_MODULE_CONTAINS_CUSTOM_CONTENT_TYPE.page_1se page_1 for o nome do modo de visualização da página.
Jean-Luc Barat

Respostas:

38

O nome de rota correto para exibição é view.VIEW_MACHINE_NAME.PAGE_MACHINENAME(em outra palavra "view.$view_id.$display_id"). tente algo como seguir

use \Drupal\Core\Url;

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

e para o seu caso

$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

Saiba mais: como formular o nome da rota

após o comentário @ 4k4, você também pode redirecionar o formulário para o roteador personalizado com URL

só precisa usar $form_state->setRedirectUrl($url)

Yusef
fonte
Esta resposta é um pouco complicada, pois você está obtendo o nome de rota correto para a exibição, portanto, não há necessidade de criar um objeto de URL a partir desse nome de rota. Você deve ser capaz de usar o nome da rota diretamente: $form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME');
kbrinner 14/06/19
5

Para usar visualizações filtros contextuais como parâmetros, use arg_X, fe.

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

O Webprofiler do módulo devel permite ver a rota de qualquer página.

Ele também exibe o número de consultas ao banco de dados feitas na página e também o tempo de solicitação, além de muitos outros recursos.

Está disponível para Drupal 7 e 8.

Parag
fonte
2

Exemplo simples: Funcionará :)

use Drupal\Core\Url;
$form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME'); // view.my_view.page_1
kalidasan
fonte
Não há necessidade de usar Drupal \ Core \ Url - você está usando a rota corretamente para que a classe de URL não seja necessária.
Kbrinner
1

Para o Durpal 8, você também pode procurar na tabela do banco de dados "roteador" os parâmetros de redirecionamento.

Procure o valor correspondente na coluna "nome" e compare com a coluna do caminho.

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