Параметры Laravel без явного указания

#laravel-5

#laravel-5

Вопрос:

Я хочу сгенерировать URL-адрес страницы без $name, что-то вроде этого

mysite.app/statestring

НО с маршрутом get('/action/{name}', ...) я могу получить только это

mysite.app/statestring/somename

Если я меняю маршрут на Route::get('/action', ...) него, это не работает, ошибка «Отсутствует аргумент 1»

Мой web.php

 Route::get('/action/{name}', [
   'uses' => 'DoActionController@getAction',
   'as' => 'returnAction',
]);
  

Мое действие контроллера

 public function ($name)
{
    return view('returnaction', ['name'=>$name]);
}
  

Моя домашняя страница

 <body>
@foreach ($yourActions as $yourAction)
    <li> 
        <a href="{{ route('returnAction', ['name'=>$yourAction->name]) }}"> {{ $yourAction->name }} </a> 
    </li>
@endforeach 
  

Ответ №1:

Вам нужно будет сделать аргумент $name необязательным.

Сначала объявите его как необязательный в контроллере:

 public function ($name = null)
  

Это избавит вас от ошибки, которую вы получаете из-за отсутствия аргумента. Затем сделайте параметр name необязательным в вашем маршруте с помощью:

 Route::get('/action/{name?}', ...);
  

Комментарии:

1. Мне нужно передать переменную $name в представление и в то же время не показывать $name в ссылке. Ваш способ не работает, потому что a всегда передает параметр