【问题标题】:Laravel prefix route and json file url is not matchingLaravel 前缀路由和 json 文件 url 不匹配
【发布时间】:2020-04-21 07:57:01
【问题描述】:

我正在尝试 Laravel 6 前缀。我的问题是当我从我的主页http://localhost:8000/ 访问我的侧边栏http://localhost:8000/project/add-project 它是文件但是当我尝试我的侧边栏http://localhost:8000/project/add-project 到我的侧边栏http://localhost:8000/project/add-project 或其他侧边栏时,它总是添加一个额外的项目词,如下所示: http://localhost:8000/project/project/add-project

我的路线:

Route::prefix('project')->group(function () {

    Route::get('/add-project', 'ProjectsController@addProject')->name('projects-add-project');
    Route::post('/add-project', 'ProjectsController@processAddProject')->name('projects-add-project');
    Route::get('/active-project-list', 'ProjectsController@activeProjectList')->name('active-project-list');

});

我的 json 文件:

{"menu": [
    {"url":"/", "name":"Dashboard", "slug":"dashboard", "badgeClass": "badge badge-warning badge-pill float-right mr-2", "icon":"feather icon-home"},
    {"url":"","navheader":"Projects","icon":""},
        {"url":"", "name":"Project", "icon":"feather icon-layers",
          "submenu": [
            {"url":"project/add-project", "name":"Add Project", "icon":"feather icon-plus-circle", "i18n":"nav.add_project"},
            {"url":"project/active-project-list" , "name":"Active Projects", "icon":"feather icon-list", "i18n":"nav.active_projects"},
            {"url":"#", "name":"Hold Projects", "icon":"feather icon-list", "i18n":"nav.hold_projects"},
            {"url":"#", "name":"Completed Projects", "icon":"feather icon-list", "i18n":"nav.completed_projects"},
            {"url":"#", "name":"Cancelled Projects", "icon":"feather icon-list", "i18n":"nav.cancelled_projects"},
            {"url":"#", "name":"All Projects List", "icon":"feather icon-list", "i18n":"nav.all_projects_list"}
          ]
        }
]}

我的子菜单类:

<ul class="menu-content">
    @foreach($menu as $submenu)
        <?php
            $submenuTranslation = "";
            if(isset($menu->i18n)){
                $submenuTranslation = $menu->i18n;
            }
        ?>
        <li class="{{ (request()->is($submenu->url)) ? 'active' : '' }}">
            <a href="{{ $submenu->url }}">
                <i class="{{ isset($submenu->icon) ? $submenu->icon : "" }}"></i>
                <span class="menu-title" data-i18n="{{ $submenuTranslation }}">{{ $submenu->name }}</span>
            </a>
            @if (isset($submenu->submenu))
                @include('panels/submenu', ['menu' => $submenu->submenu])
            @endif
        </li>
    @endforeach
</ul>

有什么办法可以解决吗,我可以用路由代替网址吗?如果可以,我该怎么做?

【问题讨论】:

  • 在网址中添加斜杠:{"url":"/project/add-project" 和 {"url":"/project/active-project-list"
  • 我用您可能想要接受的“一些”解释做出了回答,因此可以将此问题标记为已解决。谢谢

标签: json laravel routes prefix


【解决方案1】:

问题是您在链接中使用了相对 url。当您不在任何子文件夹中时,这不会造成问题:

在http://localhost 上时,链接&lt;a href="project/add-project"&gt;..&lt;/a&gt; 将链接到相对 位置http://localhost/project/add-project。

如果您已经在子文件夹http://localhost/project/ 中,则链接&lt;a href="project/add-project"&gt;..&lt;/a&gt; 将链接到相对 位置http://localhost/project/project/add-project。

您可以通过在您的网址前加上斜线 / 来克服这个问题,告诉您的浏览器首先转到网站的最上方位置:在 http://localhost/project 上链接 &lt;a href="/project/add-project"&gt;..&lt;/a&gt;(注意 /)将首先链接到最上面的位置http://localhost,然后转到project/add-project,得到http://localhost/project/add-project。

tl;博士:

在您的 json 文件中,在您的 url 前面加上一个斜杠以使其绝对:

{"url":"/project/add-project" ..
{"url":"/project/active-project-list" ..

【讨论】:

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