首页 > 解决方案 > 如何路由 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 路由的情况下进行验证?

标签: htmllaravel

解决方案


在验证失败时,它将导致重定向“返回”。'back' 完全有可能是您想要重定向到的同一个 URI,所以从您的角度来看,它看起来在正确时重定向错误。如果您删除验证,您应该得到正确的重定向。

旁注:在服务器端,哈希不是URL 的一部分。这是客户端的事情。


推荐阅读