在Cakephp中传递参数的不同方法

时间:2010-05-11 09:26:47

标签: cakephp cakephp-1.2

我正在使用cakephp v1.26 我在这样的控制器中得到了一个功能:

class testingsController extends AppController{

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

}

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

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

2 个答案:

答案 0 :(得分:7)

  

url/testings/testing/1

使用标准路线时,会拨打TestingsController::testing(1)

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

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

  

url/testings/testing:1

使用标准路线时,会拨打TestingsController::index()
$this->params['named']['testing']设置为1。这称为命名参数。

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

他们将传递给该函数,如function testing($id = null)中所示。 $id将为null。它们仅在$this->params['named']数组中可用。

答案 1 :(得分:1)

您拥有的第一个示例将其作为数字参数传递

$this->params[0]; // 1

第二个将传递一个命名对,而不是数组

$this->params['testing']; // 1

您可以使用其中任何一种。您会注意到,在对列和页面进行排序时,分页器使用key:val个配对参数。

书中有一些进一步的信息,http://book.cakephp.org/2.0/en/development/routing.html#passed-arguments