#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 всегда передает параметр