当我在主页下可以访问URL时,我试图从导航栏中访问创建页面('http://todolist.test/todo/create'),但是当我尝试从显示页面访问时,URL具有访问权限重复('http://todolist.test/todo/todo/create') 网址中的“ todo”重复了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>
创建页面路线 方法:GET | HEAD | URI:待办事项/创建|名称:todo.create |行动:App \ Http \ Controllers \ TodosController @ create |中间件:网络 显示页面路线 方法:GET | HEAD | URI:todo / {todo} |名称:todo.show |操作:App \ Http \ Controllers \ TodosController @ show |中间件:网络
答案 0 :(得分:1)
我只需在您的网址中添加一个前导/:
<a class="nav-link" href="/todo/create">Create Todo</a>
答案 1 :(得分:0)
诸如href="todo/create"
之类的链接引用会将这些单词添加到您当前的网址(在地址栏中),如果您所在的页面是http://yourdomain.com/,则指向http://yourdomain.com/todo/create
如果您随后使用相同的代码创建链接,然后再次单击它(假设它在标题中或在页面上静态实现),它将直接指向http://yourdomain.com/todo/create/todo/create
因此,我强烈建议您使用一种功能来“动态生成”您的网址(根据您的主机设置)进行动态处理。
asset('your/extension/goes/here')
是laravel提供的功能,它的作用就是:生成您的base_url。
如果href="todo/create"
收到以协议开头的网址(例如http
和https
,则不会将字符串添加到网址中,而是直接调用它。
因此,在每种情况下使用href="{{ asset('todo/create') }}"
都会渲染为href="http://yourdomain.com/todo/create"
,从而解决您的问题:)。