【问题标题】:button redirecting to wrong path按钮重定向到错误的路径
【发布时间】:2015-07-01 09:20:09
【问题描述】:

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

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

此链接按钮所在页面的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');

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

【问题讨论】:

  • 你的结论页面的 laravel 路由定义在哪里?你用 laravel 标记它,但你没有提供与之相关的代码。
  • 你在说 route.php 中的get ('/cases/{id}/responses/{respId}/conclusion', 'HomeController@conclusion'); 吗?

标签: laravel laravel-5 laravel-routing


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    生成 URL 的保存方法是始终使用 Laravel 辅助函数。这样你就不会对相对 URL 有任何问题,因为它总是会生成一个完整的 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 是 http://localhost/cases/%7Bid%7D/responses/%7BrespId%7D/conclusion 我想要这个 url 中的 $id 和 $respId 的值
    • 啊当然。好吧,您可以将它们从控制器传递到视图,也可以直接在视图中使用Route::input('id')。 (我更喜欢第一种方式)
    【解决方案3】:

    问题是当前 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 也“只是”该文件夹中的一个文档。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      相关资源
      最近更新 更多