按钮重定向到错误的路径
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
我在 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