我有链接:
example.com/register#register
Run Code Online (Sandbox Code Playgroud)
如果验证失败,laravel将重定向到:
example.com/register
Run Code Online (Sandbox Code Playgroud)
带有验证错误的位,没有哈希网址部分。如何使用#重定向到完整网址?
我知道我可以使用:
Redirect::to(route('register') . '#credits')
Run Code Online (Sandbox Code Playgroud)
但我想要完整的解决方案,所以我:
return back();
Run Code Online (Sandbox Code Playgroud)
将使用#重定向。
也许我需要重写一些代码?
小智 9
您可以使用路由名称先创建URL。
$url = URL::route('route_name', ['#hash_tag']);
Redirect::to($url);
Run Code Online (Sandbox Code Playgroud)
要么...
return Redirect::to(URL::previous() . "#hash_tag");
Run Code Online (Sandbox Code Playgroud)
但是如果你想获得正确的 URL,其中 hash 是片段部分而不是你应该使用的参数:
redirect(route('route_name', ['some_param_for_route']). '#hash')
Run Code Online (Sandbox Code Playgroud)
代替:
redirect()->route('route_name', [ 'some_param_for_route', '#hash' ])
Run Code Online (Sandbox Code Playgroud)
所以得到:
http://example.com/some_param_for_route#hash
Run Code Online (Sandbox Code Playgroud)
并不是:
http://example.com/some_param_for_route?#hash
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您还可以进一步链接它,例如:
redirect(route('route_name', ['some_param']). '#hash')->with('status', 'Profile updated!');
Run Code Online (Sandbox Code Playgroud)
小智 5
Laravel 9.x 的最佳解决方案
return to_route('route.name')->withFragment('#comments');
Run Code Online (Sandbox Code Playgroud)
小智 5
根据我的观点和您的要求,这是最好的选择。
你应该使用
return back()->withFragment('#hashtag');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5547 次 |
| 最近记录: |