按钮重定向到错误的路径

时间:2015-04-23 09:27:08

标签: laravel laravel-5 laravel-routing

我在刀片视图中使用了一个链接按钮。代码如下:

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

此链接按钮所在页面的网址:

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');

它出了什么问题?我该怎么办?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

生成URL的保存方式是始终使用Laravels帮助程序函数。这样您就不会遇到相关网址的任何问题,因为它始终会生成完整的网址。在您的情况下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>

答案 2 :(得分:0)

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

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

因此,此时您指向文件夹conclusion中的文档http://localhost/cases/137/responses/,因为30也只是该文件夹中的文档。

为了解决您的问题,您应该将您的网页命名为http://localhost/cases/137/responses/30/文件夹,该文件夹允许相对网址href="conclusion"指向http://localhost/cases/137/responses/30/conclusion

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