Laravel префикс маршрута и json URL файла не совпадают - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь 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? Если я могу, как я могу это сделать?

1 Ответ

0 голосов
/ 21 апреля 2020

Проблема в том, что вы используете относительные URL в своих ссылках. Что не представляет проблемы, когда вы не находитесь ни в одной подпапке:

Когда на http://localhost ссылка <a href="project/add-project">..</a> будет ссылаться на относительное местоположение http://localhost/project/add-project.

Если вы уже находитесь в подпапке http://localhost/project/, ссылка <a href="project/add-project">..</a> будет ссылаться на относительное местоположение http://localhost/project/project/add-project.

Вы можете преодолеть это, добавив свои URL с sla sh /, сообщая вашему браузеру go сначала о самом верхнем местоположении на сайте: находясь на http://localhost/project, ссылка <a href="/project/add-project">..</a> (обратите внимание на /) будет ссылаться на самое верхнее местоположение * Сначала 1021 *, затем переход к project/add-project, в результате чего http://localhost/project/add-project.

tl; dr:

В вашем файле json добавьте к URL-адресам sh сделайте их абсолютными:

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