Передача параметра с использованием маршрутов laravel 5.8 - PullRequest
4 голосов
/ 23 сентября 2019

У меня есть два маршрута

Route::get('/fasilitas/{fasilitas_id}/{any}','Fasilitas_controller@detail_fasilitas');
Route::get('/fasilitas/get_kategori/{kf_id}','Fasilitas_controller@get_kategori');

, но когда я получаю доступ ко вторым маршрутам, он всегда получает первые маршруты, почему?и как это исправить?спасибо за помощь

Ответы [ 4 ]

1 голос
/ 23 сентября 2019

Вы можете ограничить формат параметров вашего маршрута, используя метод where для экземпляра маршрута.Метод where принимает имя параметра и регулярное выражение, определяющее, как должен быть ограничен параметр:

Route::get('/fasilitas/{fasilitas_id}/{any}','Fasilitas_controller@detail_fasilitas')->where(['fasilitas_id' => '[0-9]+', 'any' => '[0-9]+']);
Route::get('/fasilitas/get_kategori/{kf_id}','Fasilitas_controller@get_kategori')->where('kf_id' => '[0-9]+');

Для получения дополнительной информации Ограничения регулярного выражения

Другой способ передать его, определить имя маршрута.

Route::get('/fasilitas/{fasilitas_id}/{any}','Fasilitas_controller@detail_fasilitas')->name('fasilitas.example1');

  <a href="{{ route('fasilitas.example1',['fasilitas_id'=>1,'any'=>2]) }}">

  Route::get('/fasilitas/get_kategori/{kf_id}','Fasilitas_controller@get_kategori')->name('fasilitas.example2');

  <a href="{{ route('fasilitas.example2',['kf_id'=>1]) }}">
1 голос
/ 23 сентября 2019

При нажатии /fasilitas/get_kategori вы запускаете первый маршрут, с get_kategori, являющимся {fasilitas_id}.

Измените порядок ваших маршрутов, так что /fasilitas/get_kategori будет вызван первым:

Route::get('/fasilitas/get_kategori/{kf_id}','Fasilitas_controller@get_kategori');
Route::get('/fasilitas/{fasilitas_id}/{any}','Fasilitas_controller@detail_fasilitas');
0 голосов
/ 23 сентября 2019

Попробуйте с именем.Это будет более эффективным
Fasilitas!
Может быть, вы пытались написать средства.Как бы то ни было, я пишу на основе вашего метода.

Route::get('/fasilitas/{fasilitas_id}/{any}','Fasilitas_controller@detail_fasilitas')->name('detail.fasilitas');
Route::get('/fasilitas/get_kategori/{kf_id}','Fasilitas_controller@get_kategori')->name('get.kategori');

Как позвонить на первой странице для двух параметров и одного параметра?Посмотрите ниже.

Для detail.fasilitas

<a href="{{ route('detail.fasilitas',$fasilitas_id,$any) }}">Detail Fasilitas</a>

Для одного параметра: get.kategori

<a href="{{ route('get.kategori',$kf_id) }}">Get Kategori</a>

Попробуйте.
Дайте мне знать его работу илинет
Веселитесь с кодом.

0 голосов
/ 23 сентября 2019

Второй сегмент первого маршрута является подстановочным знаком, что означает, что это может быть что угодно.

Когда второй маршрут вызывается в браузере, второй сегмент (/ get_kategori /) проходит через подстановочный знакпервый маршрут.

Изменение порядка маршрутов может решить проблему.Но лучшая практика - это изменение названия маршрута.Пример:

Route::get('/fasilitas/something_else/{fasilitas_id}/{any}','Fasilitas_controller@detail_fasilitas');
Route::get('/fasilitas/get_kategori/{kf_id}','Fasilitas_controller@get_kategori');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...