【问题标题】:A duplication in URL route LaravelURL 路由 Laravel 中的重复项
【发布时间】:2019-10-11 19:39:09
【问题描述】:

当我在主页下时,我试图从导航栏访问创建页面,我可以毫无问题地访问 url ('http://todolist.test/todo/create'),但是当我尝试从显示页面访问时,url 有重复('http://todolist.test/todo/todo/create') "todo" 在 url 中重复了 2 次。

<ul class="navbar-nav mr-auto">
          <li class="{{Request::is('/')? 'active' : ''}}">
            <a class="nav-link" href="/">Home <span class="sr-only">(current)</span></a>
          </li>
          <li class="{{Request::is('todo/create')? 'active' : ''}}">
            <a class="nav-link" href="todo/create">Create Todo</a>
          </li>


        </ul>

创建页面路径 方法:获取|头| URI:待办事项/创建 |名称:todo.create |动作:App\Http\Controllers\TodosController@create |中间件:web 显示页面路径 方法:获取|头| URI:todo/{todo} |名称:todo.show |操作:App\Http\Controllers\TodosController@show |中间件:web

【问题讨论】:

  • 这是相对url的常见问题(如href="todo/create")我解决它的方法是使用asset()函数,如下所示:href="{{ asset('todo/create') }}"(假设你在刀片文件中)
  • 你也可以像这样为 js 配置文件:&lt;script&gt;function asset(url) { return '{{ asset('') }}' + url; }&lt;/script&gt; 在刀片文件中
  • @RobBiermann 非常感谢先生,它起作用了,您是我的救星,但如果可能的话,您能解释一下为什么它与资产而不是直接链接一起使用,因为我想了解的不仅仅是运行代码。对不起我的英语不好,再次感谢

标签: html laravel


【解决方案1】:

href="todo/create"这样的链接引用将这些字词添加到您当前的url(在地址栏中),如果您所在的页面是http://yourdomain.com/,它指的是http://yourdomain.com/todo/create

如果您使用相同的代码创建链接,然后再次单击它(假设它在您的标题中或在页面上静态实现),它将指向http://yourdomain.com/todo/create/todo/create

因此,我强烈建议采用动态方法,使用函数“生成”您的 url(基于您的主机设置)。

asset('your/extension/goes/here') 是 laravel 提供的一个函数,它就是这样做的:生成你的 base_url。

如果href="todo/create"接收到以协议开头的url(如httphttps,它不会将字符串添加到url中,而是直接调用它。

因此,在任何情况下使用href="{{ asset('todo/create') }}" 都会呈现为href="http://yourdomain.com/todo/create",从而解决您的问题:)。

【讨论】:

  • 非常感谢亲爱的先生希望你有一个美好的一天你是我的英雄
【解决方案2】:

我只想在你的网址中添加一个前导 /:

<a class="nav-link" href="/todo/create">Create Todo</a>

【讨论】:

    猜你喜欢
    • 2016-03-10
    • 2013-09-05
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    相关资源
    最近更新 更多