2015-03-31 46 views
1

我想在CakePHP 3中生成一個路由。我有一個名爲ContractsController的控制器,其中我有一個動作 - details($id)CakePHP 3.0 - 將參數傳遞給映射的RESTful資源

我要地圖的details($id)行動:

/api/contracts/details/id.json

我已經儘量得到如下所示(以routes.php):

Router::scope('/api', function ($routes) { 
    $routes->extensions(['json']); 
    $routes->resources('Contracts', [ 
     'map' => [ 
      'details' => [ 
       'action' => 'details', 
       'method' => 'GET' 
      ] 
     ] 
    ]); 
}); 

這讓我訪問details行動通過/api/contracts/details.json,但我不知道如何通過一個ID與它。

回答

2

最終我能夠用下面來解決這個問題:

Router::scope('/api', function ($routes) { 
    $routes->extensions(['json']); 
    $routes->resources('Contracts', [ 
     'map' => [ 
      'details/:id' => [ 
       'action' => 'details', 
       'method' => 'GET' 
      ] 
     ] 
    ]); 
}); 
+0

是的,我可以確認這是在CakePHP 3中工作。另外,如果您將字符串作爲參數傳遞,請使用*通配符而不是':id',以便上面示例中的第五行讀取''details/*' '。 – 2017-07-27 00:33:43

0

我會做這樣的事情:

Router::scope('/api', function ($routes) { 
    $routes->extensions(['json']); 
    $routes->resources('Contracts', [ 
     'map' => [ 
      'details' => [ 
       'action' => 'details', 
       'id' => '[0-9]+', 
       'method' => 'GET' 
      ] 
     ] 
    ]); 
}); 

如果這不起作用,讓我知道,我會運行一個快速測試。

+0

嗨,這之後了抱歉的延遲。這仍然給我同樣的錯誤信息:'錯誤:無法找到ApiController.',我認爲這意味着URL只是不被檢測爲需要路由的東西。 – Kez 2015-04-01 12:30:34

+0

這確實很奇怪。但是,你可能想看看你的'routes.php'設置。你可能想在這裏發佈你的整個代碼。我認爲問題在那裏。 – 2015-04-01 14:44:22