【问题标题】:How can I pass the ID in the URL using SLIM Framework PHP?如何使用 SLIM Framework PHP 在 URL 中传递 ID?
【发布时间】:2019-02-27 01:13:34
【问题描述】:

我是使用 SLIM 框架的新手,我正在开发一个项目/平台,允许用户发布他们的列表并接受潜在客户的预订。但我希望他们能够分享指向他们列表的链接。

我在下面提供了相关代码,用于在单个页面上显示所有这些列表。单击其中一个列表时,信息将被推送到模式中。我希望为每个列表生成一个链接,可以通过电子邮件或消息共享并轻松访问。

在我被困住的那一刻:

localhost/listings

我想要的结果是:

localhost/listings/+itemid/

Listings.html

function listingInfo($id,$location){

  // Detail View Specific

  $('.listing-info-container').addClass('active');
  $('.listing-info').html('').removeClass('active');
  showLoader($('.listing-info'));
  showLoader($('.listings-results'));

  setTimeout(function(){
    $.ajax({
      method: "GET",
      url: "/listing_information/"+$id
    })
    .done(function(result){
      $('.listing-info').html(result).addClass('active');
      hideLoader($('.listing-info'));
      hideLoader($('.listings-results'));
      // hide map if on mobile - link to external google maps site instead
      $('.listings-map').toggleClass('is-hidden', isMobile());
      // set co-ord vals in hidden textbox
      $('#listing-detail-directions-ll').val($location.toString().replace(/["'()]/g,'').replace(' ', ''));
    });
  }, 1000);

Listings.php

   //to display all listings on a single page
$app->get('/listings', function ($request, $response, $args) {
      $variables['title'] = 'Listings';
      $variables['categories'] = $this->db->select('listing_categories','*');

      return $this->view->render( $response, 'listings.html', $variables,);
    });

【问题讨论】:

    标签: php slim slim-3


    【解决方案1】:

    只需在路由描述中提及参数,如下所示:

    $app->get('/listings/{id}', function ($request, $response, $args) {
    ...
    

    然后你就可以在路由处理程序中访问它了:

    $route = $request->getAttribute('route');
    $listingId = $route->getArgument('id');
    

    【讨论】:

    • 谢谢,我会试试这个,我试过 get('/listings/{id}', ...) 但我看到你在定义 $listingID 变量时做了什么.当您说在路由处理程序中访问它时,您是什么意思?抱歉,如果它是一个明确的答案,我是 Slim 框架的新手,而且我还没有从头开始构建平台。我刚刚作为贡献者加入
    • 精打细算:id 也应该在 $args['id'] 中可见(间接略少)slimframework.com/docs/v3/objects/router.html
    • 也适用于 $app->group() 回调中的 Slim v4。
    【解决方案2】:

    这是你要找的吗?

    $app->get('/api/:version/users/:id', function ($version, $id) {
        // you can access $version and $id here
    }
    

    【讨论】:

    • 这似乎适用于 slim v2
    【解决方案3】:

    在 Slim v3 上执行此操作的最简单方法是:

    $app->get('/listings/{id}', function ($request, $response, $id) {
        // do something with $id here
    }
    

    由于参数值被 {id} 捕获并存储在 $id 变量中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 2019-09-04
      • 2013-09-29
      • 1970-01-01
      相关资源
      最近更新 更多