这就是我在我的路线中所拥有的:
Router::scope('/', function ($routes) {
$routes->extensions(['json']);
$routes->resources('CustomerCompanies', [
'map' => [
'get_by_account' => [
'action' => 'get_by_account',
'method' => 'GET',
]
]
]);
这是get_by_account
内的方法CustomerCompaniesController.php
:
/**
* Pagination method by Customer Account id
*
* @param string|null $id Customer Account id.
* @return void Redirects to index.
* @throws \Cake\Network\Exception\NotFoundException When record not found.
*/
public function get_by_account($customer_account_id = null)
{
}
关系:
答案 0 :(得分:3)
您必须定义:id
路由元素,即passed by default(目前无法传递更多自定义路由元素)。您可以在地图条目的数组键中执行此操作
'map' => [
'get_by_account/:id' => [
'action' => 'get_by_account',
'method' => 'GET',
]
]
或通过path
选项(默认情况下,密钥设置为path
选项的值)
'map' => [
'get_by_account' => [
'action' => 'get_by_account',
'method' => 'GET',
'path' => 'get_by_account/:id'
]
]
另见
答案 1 :(得分:1)
我意识到业务逻辑明智,我试图创建一个嵌套资源。
因此,我将把我的答案包含在我自己question的另一个关于创建嵌套资源的答案中。
------- ANSWER -----------
在routes.php
$routes->resources('Parents', function ($routes) {
$routes->resources('Children');
});
$routes->resources('Children');
在ChildrenController.php
,
protected function _prepareConditions() {
$parentId = isset($this->request->params['parent_id']) ? $this->request->params['parent_id'] : null;
if ($parentId == null) {
return [];
}
return [
'Children.parent_id' => $parentId
];
}
public function index()
{
$conditions = $this->_prepareConditions();
$this->paginate = [
'contain' => ['Parents'],
'conditions' => $conditions
];
// ... and so on
您将能够执行以下操作:
为什么会这样?
http://book.cakephp.org/3.0/en/development/routing.html#creating-nested-resource-routes
告诉我们,基本上基本上从请求参数中检索父ID。
它没有明确说明的是,路由将重用基本的5个函数:索引,添加,查看,删除,编辑,即使将它们嵌套在父URL下也是如此。
为什么您还为儿童提供单独的资源路线?
这允许/ children和/children.json在你需要的时候也可以工作。
添加怎么办?
我没有尝试过,但我没有预见到使用它作为
的任何问题