Доступ к именованным переменным CakePHP и PHP GET и различия между этими двумя - PullRequest
2 голосов
/ 01 июля 2011

В чем разница между /action?query=value и /action/query:value

так как последний кажется способом обработки строк запроса в CakePHP и как мне сделать последний или первый в Cake?

Спасибо

Ответы [ 2 ]

6 голосов
/ 02 июля 2011

Пример обычного php:

...action.php?name=blah&id=7

Вы можете получить доступ к этому как:

$name = $_GET['name'];
$id = $_GET['id'];

Пример с именованными параметрами в CakePHP:

...action/name:blah/id:7

И вы можете получить к ним доступ следующим образом:

$name = $this->params['named']['name'];
$id = $this->params['named']['id'];

ОБНОВЛЕНИЕ: Больше не рекомендуется использовать именованные параметры в CakePHP, так как онибыли удалены в CakePHP 3.0 +


Преимущества использования именованных параметров в CakePHP:

  • Полная поддержка маршрутизатора (см. комментарий @deceze ниже, объясняющий это)
  • делает его легче / чище в сочетании с такими вещами, как Paginate
  • лучше для SEO ( в зависимости от того, что вы передаете )
  • you 'Вы в CakePHP - используйте материал CakePHP <- говорит он в шутку </li>
  • ... и больше?

Примечание:

Вы также можете отправлять параметры через url / CakePHP без использования именованных параметров:

...action/blah/7

Они извлекаются функцией vars:

function action($name, $id) {
2 голосов
/ 02 июля 2011

В первом случае вы можете получить доступ к параметрам строки запроса так же, как в обычном PHP:

foreach ($_GET as $param => $value){
    // do stuff
}

Я никогда не видел второй используемый метод, но я думаю, что они являются дополнительными параметрами для действия контроллера и могут быть проиндексированы их ключом, аналогичным $_GET. Хотя это полное предположение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...