Отсутствуют обязательные параметры для выдачи маршрута в laravel - PullRequest
0 голосов
/ 24 апреля 2020

В моем приложении, основанном на laravel, у меня есть следующая ссылка в моем admin.blade.php

<ul class="nav nav-treeview">
              <li class="nav-item">
                <a href="{{ route('cms.home.create') }}" class="nav-link">
                  <i class="far fa-circle nav-icon"></i>
                  <p>{{ __('Home Page') }}</p>
                </a>
              </li>

В моем проекте у меня есть еще один блейд, create.blade.php, который находится по следующему пути

views/cms/home/create.blade.php

У меня есть контроллер с именем CmsHomeController.php для этого блейда

В CmsHomeController у меня есть метод с именем create

public function create()
    {

        return view('cms.home.create'); 
    }

Как только пользователь нажимает на вышеупомянутую ссылку в admin.blade.php, пользователь должен go к create.blade.php блейду.

И в моем web.php я зарегистрировал свой маршрут следующим образом:

Route::resource('cms.home','CmsHomeController');

Но теперь проблема is,

Когда я нажимаю на эту ссылку в админке, я получаю сообщение об ошибке:

Facade\Ignition\Exceptions\ViewException
Missing required parameters for [Route: cms.home.create] [URI: cms/{cm}/home/create]. (View: C:\xampp\htdocs\mylaravelproject\resources\views\layouts\admin.blade.php) 

В create.blade.php у меня просто простая форма

Где я делаю неправильно и что будет правильным решением?

ОБНОВЛЕНИЕ:

Я пытался запустить

php artisan route:list

Вот что я получил

enter image description here

У меня нет такого параметра, называемого 'cm' ..

Ответы [ 3 ]

2 голосов
/ 24 апреля 2020

Поскольку вы используете оператор dot (.) в маршруте своего ресурса, он будет генерировать вложенные маршруты.

Вам необходимо изменить имя маршрута с помощью одного имени, например cms-home или cms_home

Тогда вы можете просто использовать его как:

Route::resource('cms_home','CmsHomeController');

В вашем клинке вы можете назвать его:

<a href="{{ route('cms-home.create') }}" class="nav-link">

Пожалуйста, посмотрите на это Referance

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

Просто передайте значение в вашем маршруте cms.home.create следующим образом.

<ul class="nav nav-treeview">
          <li class="nav-item">
            <a href="{{ route('cms.home.create', ['cm' => $value]) }}" class="nav-link">
              <i class="far fa-circle nav-icon"></i>
              <p>{{ __('Home Page') }}</p>
            </a>
          </li>
0 голосов
/ 24 апреля 2020

Вашему маршруту нужен параметр (см). Вы должны иметь в своем шаблоне href="{{ route('cms.home.create', ['cm' => $id_cm]) }}"

...