Cakephp中参数传递的不同方法

Cakephp中参数传递的不同方法,cakephp,cakephp-1.2,Cakephp,Cakephp 1.2,我正在使用cakephp v1.26。 我在控制器中得到了这样一个函数: class testingsController extends AppController{ function testing($id=null){ $recieved = $id;} } 我不确定是否有更好的方法将参数传递给动作测试。 但是我遇到过一些网站,得到了这两种方法。 以下参数传递方法有什么不同吗? 1. url/testings/testing/1 2. url/testings/testing:1

我正在使用cakephp v1.26。
我在控制器中得到了这样一个函数:

class testingsController extends AppController{

function testing($id=null){
$recieved = $id;}

}
我不确定是否有更好的方法将参数传递给动作测试。
但是我遇到过一些网站,得到了这两种方法。
以下参数传递方法有什么不同吗?

1. url/testings/testing/1
2. url/testings/testing:1
url/testings/testing/1

对于标准路由,这将调用
testingscoontroller::testing(1)

这是标准的参数传递,超出
/:controller/:action/
的任何参数都会“按原样”传递给被调用的操作

/controllers/action/param1/param2
对应于
ControllersController::action($param1,$param2)

url/测试/测试:1

对于标准路由,这将调用
testingscoontroller::index()

$this->params['named']['testing']
设置为
1
。这称为命名参数

命名参数可以按任何顺序传递。这两个URL是等效的:
url/testings/testing:1/foo:2

url/testings/foo:2/testing:1


它们不会被传递给函数,就像在函数测试($id=null)中一样<代码>$id将为
null
。它们仅在
$this->params['named']
数组中可用。

您的第一个示例将它作为数字参数传递

$this->params[0]; // 1
第二个将传递一个命名对,就像一个数组

$this->params['testing']; // 1
您可以将其中一个用于不同的用途。您会注意到,分页器在对列和页进行排序时使用
key:val
成对参数


书中还有一点进一步的信息,

是的,比我的答案要详细得多,我已经忘记了(命名)!我真丢脸;)