разница между $ this-> params ['url'] и $ this-> params ['named'] - PullRequest
4 голосов
/ 14 марта 2012

Я читал руководство по CakePHP по $ params и задавался вопросом, какое подходящее использование для каждого?Я знаю, что возвращаемый массив немного отличается (у 'url' на самом деле есть ключ массива с именем 'url', который возвращает контроллер / действие, а у 'named' нет. Может кто-нибудь показать пример того, почему это важноиспользовать один поверх другого? (Я видел структурную разницу в URL, а также не знал, почему разница между ключом: значением и ключом = значением)

Ответы [ 2 ]

10 голосов
/ 14 марта 2012

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 '.

0 голосов
/ 23 октября 2013
$this->params['url']

Сохраняет текущий запрошенный URL вместе с парами ключ-значение переменных get. Например, если URL

/posts/view/?var1=3&var2=4 был вызван, $this->params['url'] будет выглядеть так:

[url] => Array
(
 [url] => posts/view
 [var1] => 3
 [var2] => 4
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...