【问题标题】:Passing parameter using routes laravel 5.8使用路由 laravel 5.8 传递参数
【发布时间】:2020-01-23 08:29:49
【问题描述】:

我有两条路线

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

但是当我访问第二条路线时,它总是获得第一条路线,为什么? 以及如何解决? 谢谢你帮助我

【问题讨论】:

  • 你试过改变路线的顺序吗?
  • 尝试更改路线顺序

标签: php laravel routes


【解决方案1】:

点击/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');

【讨论】:

    【解决方案2】:

    第一条路由的第二段是通配符,这意味着它可以是任何东西。

    当在浏览器中调用第二个路由时,第二个段 (/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');
    

    【讨论】:

    • 感谢您的解决方案,但第一条路线是必须的,我无法更改
    【解决方案3】:

    您可以使用路由实例上的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]+');
    

    欲了解更多信息Regular Expression Constraints

    另一种传递方式定义名称路由。

    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]) }}">
    

    【讨论】:

    • 检查另一种方式以及这种路线。
    【解决方案4】:

    尝试使用 name 。会更有效率
    法西里塔斯!
    可能是你试图写设施。 不管怎样,我是根据你的方法写的。

    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');
    

    如何在首页调用两个参数和单个参数? 看看下面。

    详情.fasilitas

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

    对于单个参数:get.kategori

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

    试试吧。
    让我知道它的工作与否。
    享受代码的乐趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-16
      • 2019-03-03
      • 2018-08-14
      • 2019-08-07
      • 1970-01-01
      • 2020-01-23
      • 2016-09-19
      • 1970-01-01
      相关资源
      最近更新 更多