Дублирование в URL маршрута Laravel - PullRequest
1 голос
/ 25 мая 2019

Я пытаюсь получить доступ к странице создания с панели навигации, когда я нахожусь под домашней страницей, я могу без проблем получить доступ к URL ('http://todolist.test/todo/create'), но когда я пытаюсь получить доступ со страницы шоу, у URL есть дублирование ('http://todolist.test/todo/todo/create') "todo" повторяется 2 раза в URL.

<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 | Имя: todo.create | Действие: App \ Http \ Controllers \ TodosController @ create | Промежуточное программное обеспечение: веб показать страницу маршрута Метод: GET | HEAD | URI: todo / {todo} | Имя: todo.show | Действие: App \ Http \ Controllers \ TodosController @ show | Промежуточное программное обеспечение: веб

Ответы [ 2 ]

1 голос
/ 25 мая 2019

Я бы просто добавил ведущий / к вашему URL:

<a class="nav-link" href="/todo/create">Create Todo</a>
0 голосов
/ 25 мая 2019

Ссылочная ссылка, такая как 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-адрес, начинающийся с протокола (например, http и https, он не добавляет строку в URL-адрес, а вызывает ее напрямую.

Таким образом, использование href="{{ asset('todo/create') }}" приведет к href="http://yourdomain.com/todo/create" в любой ситуации, тем самым исправляя вашу проблему:).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...