Имя маршрута Laravel на основе переданного параметра

#php #laravel

Вопрос:

Вот как представлен мой маршрут Laravel

 Route::match(['get', 'post'], 'add-edit-category/{id?}', 'CategoryControlller@addEditCategory')->name('Add/Edit Category');
 

Поэтому, если я получу идентификатор, контроллер вызовет функцию редактирования, иначе он создаст функцию.

Как выполнить ->name() условие так, чтобы, если у меня есть переменная, я отправлял ->name('Add Category') , а если нет ->name('Edit Category')

Попробовал погуглить, но, похоже, не смог найти пример для того же самого.

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

1. ты этого не делаешь … вы создаете 2 разных маршрута для редактирования и создания и называете каждый по своему усмотрению … нет никаких причин для того, чтобы название «менялось» для одного маршрута

2. если вам все еще нужен единый маршрут, создайте общий маршрут с тем же именем и в методе контроллера проверьте, существует ли идентификатор в запросе или нет .если идентификатор существует, то его отредактируйте или создайте новый

Ответ №1:

Просто используйте 2 маршрута, один с идентификатором, а другой без него:

 Route::match(['get', 'post'], 'add-edit-category', 'CategoryControlller@addEditCategory')->name('Add_Category');
Route::match(['get', 'post'], 'add-edit-category/{id}', 'CategoryControlller@addEditCategory')->name('Edit_Category');
 

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

1. Просто для подтверждения, мы никак не сможем достичь этого в однолинейном праве. Как будто у них нет скрытого способа сделать это.

2. @HariharanThiagarajan может быть, есть способ, но это не чистое кодирование/безопасное кодирование и не рекомендуется!

3. @HariharanThiagarajan Вы можете сделать свой контроллер спокойным, а затем использовать Route::resource(...) , если хотите, чтобы он был однострочным.

Ответ №2:

Используйте для этой цели тернарный оператор:

Передать флаг из функции добавить контроллер категории в блейд:

 $add_catrgory = true;
 

затем в blade вы можете проверить это следующим образом:

 href= "{{$add_category == true ? route('Add_Category') : route('Edit_Category', $id ) }}"