按钮重定向到错误的路径

button redirecting to wrong path

我在 blade 视图中使用 link 按钮。代码如下:

<a href="conclusion" class='btn btn-default btn-sm'>End Case</a>

此 link 按钮所在页面的 url:

http://localhost/cases/137/responses/30

我的按钮的结果应该是

http://localhost/cases/137/responses/30/conclusion 

但它正在重定向到

http://localhost/cases/137/responses/conclusion

我的laravel路由定义是:

get('/cases/{id}/responses/{respId}/conclusion', 'HomeController@conclusion');

有什么问题吗?我该怎么做?

重定向与当前路径无关。它相对于index.xxx。我建议您使用完全限定的路径。

生成 URLs 的保存方法是始终使用 Laravels 辅助函数。这样你就不会遇到相对 URLs 的任何问题,因为它总是生成一个完整的 URL。在你的情况下 action() 是合适的:

<a href="{{ action('HomeController@conclusion', [$id, $respId]) }}" class='btn btn-default btn-sm'>End Case</a>

或者,您可以为路线命名:

get('/cases/{id}/responses/{respId}/conclusion', [
    'as' => 'conclusion',
    'uses' => 'HomeController@conclusion'
]);

然后:

<a href="{{ route('conclusion', [$id, $respId]) }}" class='btn btn-default btn-sm'>End Case</a>

问题是当前 url 指向文档,而不是文件夹:https://cdivilly.wordpress.com/2014/03/11/why-trailing-slashes-on-uris-are-important/

使用相对 href 时,您实际上指向的是当前文件夹中的文档。虽然您当前的 url 没有结尾斜杠 (/),但它被解释为文档,相对 url 实际上将替换文档名称。

所以此时你指向文件夹http://localhost/cases/137/responses/中的文档conclusion,因为30也是该文件夹中的一个文档"just"。

为了解决您的问题,您应该将您的页面作为一个文件夹 http://localhost/cases/137/responses/30/ 访问,它允许相对 url 的 href="conclusion" 指向 http://localhost/cases/137/responses/30/conclusion

为确保这在 laravel 中有效,您指向响应的路由应该有一个结尾 /。更好的解决方案是使用 laravel 辅助函数(如 route()action() 生成到页面的路由;见 http://laravel.com/docs/5.0/helpers#urls