html - 如何路由 url 以包括向下滚动到 Laravel 中的 div id
问题描述
我正在验证联系表格。我将它包装在一个 div 中,id 为“contactform”。当提交后出现验证消息时,我希望重定向页面自动向下滚动到“contactform”div,这样用户就不必自己向下滚动来更正表单。
我可以通过手动输入 url:localhost:8000/#contactform 轻松完成此操作
但是我无法让路由在 Laravel 中工作。我尝试将控制器更改为:
return Redirect::to('/#contactform');
我试过了:
return Redirect::to('#contactform');
return Redirect::to('/' . '#contactform');
return view('/')->with('#contactform');
return view('/#contactform');
return view('/pages.index.#contactform');
return view('/pages.index#contactform');
他们都在没有 #contactform 的 url 的情况下返回。我知道有一种 javascript 方法可以实现这一点,但我现在真的想远离 javascript。必须有一种更简单的方法,我只是看不到它。我是 Laravel 的新手,完全是自学的。谢谢
***编辑我一步一步尝试了一个新的控制器。没有验证它就可以工作。验证似乎打破了它。
这有效:
public function store() {
return (string) Redirect::to('/#contactform');
}
这打破了它:
public function store(Request $request) {
$this->validate($request, [
'first_name' => 'required',
'last_name' => 'required',
'email' => 'required|email',
'telephone' => 'nullable',
'comments' => 'required',
]);
return (string) Redirect::to('/#contactform');
}
我在控制器页面的顶部调用请求并重定向,如下所示:
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redirect;
谁能帮我弄清楚为什么我不能在不破坏 url 路由的情况下进行验证?
解决方案
在验证失败时,它将导致重定向“返回”。'back' 完全有可能是您想要重定向到的同一个 URI,所以从您的角度来看,它看起来在正确时重定向错误。如果您删除验证,您应该得到正确的重定向。
旁注:在服务器端,哈希不是URL 的一部分。这是客户端的事情。