TLDR: Для CakePHP 2.x: использование параметров ['named'] или params ['url'] зависит только от того, какие данные вы ищете. 'url' возвращает строку всего URL-адреса после домена, а 'named' возвращает массив всех переданных «именованных» переменных (разделенный запятыми ключ: пары значений)
CakePHP 3.x: без именованных переменных
Более подробно объяснено:
Лучший способ получить представление о том, почему вы используете один из других вариантов, - это отладочные параметры в представлении:
отладки ($ this-> PARAMS);
Вы увидите, что в массиве параметров много данных. Например, с моим URL: http://www.example.com/dashboards/index/1/2/blah:test
params => array(
'plugin' => null,
'controller' => 'dashboards',
'action' => 'index',
'named' => array(
'blah' => 'test'
),
'pass' => array(
(int) 0 => '1',
(int) 1 => '2'
),
'models' => array(
'Dashboard' => array(
'plugin' => null,
'className' => 'Dashboard'
),
//...
)
)
data => array()
query => array(
'dashboards/index/1/2/blah:test' => ''
)
url => 'dashboards/index/1/2/blah:test'
base => ''
webroot => '/'
here => '/dashboards/index/1/2/blah:test'
Как видите, у него МНОГО данных. Ваш вопрос "почему вы используете" с именем "vs" url "объясняется только просмотром данных.
$this->params['url']
возвращает STRING 'dashboards/index/1/2/blah:test'
(в большинстве случаев не очень удобно).
$this->params['named']
возвращает массив ключ / значение ваших именованных переменных (в данном случае только одну переменную): array('blah' => 'test');
(гораздо удобнее использовать, если это то, что мы ищем)
Итак ... ответ: если вы хотите именованные переменные, используйте 'named'
- если вы хотите, чтобы конец URL-адреса был строкой, используйте 'url
'.