различные методы передачи параметров в Cakephp - PullRequest
0 голосов
/ 11 мая 2010

Я использую 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 ]

7 голосов
/ 11 мая 2010

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 голос
/ 11 мая 2010

Первый ваш пример передаст его как числовой параметр

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

Вторая пройдет именованную пару, скорее как массив

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

Вы можете использовать либо для разных вещей. Вы заметите, что paginator использует key:val парных параметров при сортировке столбцов и страниц.

В Книге есть немного дополнительной информации, http://book.cakephp.org/2.0/en/development/routing.html#passed-arguments

...