Em alguns momentos de sua aplicação ou site desenvolvido com o framework Laravel, existe a necessidade de, via um “link”, permitir ao seu usuário voltar ou retornar para a URL - página ou rota, anteriormente chamada.
Isto é comumente necessário ao mostrar uma tela de mensagem de erro do tipo 404 - Page not found, ou 403 - Forbidden (Não autorizado).
Porém, nem sempre é interessante montar este link por meio do History de navegação do browser, que pode ser conseguido pelo método back em Javascript.
O exemplo de código em Javascript para retornar à URL de navegação anterior seria:
history.back()
Como eu disse acima, nem sempre é interessante usar esta função pois nosso usuário pode ter chegado a este ponto do sistema por meio de redirecionamentos, sendo necessário garantir a rota anterior corretamente.
Outro problema está relacionado ao SEO de sua aplicação que pode ser prejudicado se o motor de busca não identificar corretamente os links nas páginas que faz o rastreamento.
Montar o link para URL ou Rota anterior com Laravel
Portanto a melhor estratégia é montar este endereço de URL utilizando os componentes que o Laravel fornece ao desenvolvedor.
Você pode montar a URL usando duas estratégias diferentes: no Controller (Controlador) ou diretamente na View (Visão) diretamente no Template Blade. Caso monte no controller você deve passar como uma variável esta informação para a view.
Redirecionar para URL anterior no Controller
Para direcionar o usuário diretamente do controller para a rota anterior, você deverá retornar de uma action deste controlador que enviará ao navegador as informações corretas de redirect.
Esta é uma estratégia que não monta a URL na tela para o usuário, mas atende se você estiver em um fluxo onde sua aplicação necessite tomar a decisão de redirecionar o usuário para a rota anterior.
Utilize para isto ou o helper back()
:
function actionController()
{
...
// retorna com redirect para a última rota
return back();
}
Ou ainda utilizando o helper redirect
com o método back
:
function actionController()
{
...
// retorna com redirect para a última rota
return redirect()->back();
}
Usando esta estratégia ainda é possível adicionar variáveis de input do usuário para a rota que estará sendo chamada, ou informações de erro:
function actionController()
{
...
// retorna com redirect para a última rota, com Inputs do usuário e Mensagem de Erro
return redirect()
->back()
->withInput()
->withErrors(['My error message']);
}
Mas se você precisa mostrar a URL ao usuário, para que ele clique na mesma e um mecanismo de busca possa indexar esta informação, faça isto diretamente na View.
Montar URL anterior na View com Blade
Se você deseja montar um link na tela para que o usuário clique e volte à página anteriormente navegada por ele, utilize o helper url
que monta corretamente as URLs do seu aplicativo, chamando seu método previous
:
<a href="{{ url()->previous() }}">
<i class="fa fa-arrow-circle-o-left"></i>
<span>Voltar</span>
</a>
Assim o usuário poderá clicar no link e o mecanismo de busca poderá montar corretamente a árvore de links de seu site ou aplicação se necessário.
Comentários