Должен ли я использовать массив или строку в параметре ссылки в CakePHP HtmlHelper? - PullRequest
0 голосов
/ 17 сентября 2011

Метод CakePHP HtmlHelper link() принимает 2 типа переменных в качестве второго параметра (параметр URL-адреса ссылки).

Теперь мне интересно, если использовать для параметра массив, например

array('controller'=>'users','action'=>'login')

медленнее, чем использование строки, например '/users/login'.Поскольку помощнику не нужно будет анализировать массив, просто отобразите ссылку.

Если это так, то для чего предназначен метод link()?На данный момент я использую HtmlHelper::url() метод с обычным <a> для отображения всех моих ссылок, чтобы сохранить мой шаблон в чистоте!

Пожалуйста, исправьте меня:)

Ответы [ 2 ]

2 голосов
/ 17 сентября 2011

Одной из причин является обратная маршрутизация: например, если вы направляете «/ бла» в массив («контроллер» => «статьи», «действие» => «индекс»). Когда вы создаете ссылку с массивом ('controller' => 'article', 'action' => 'index'), торт может автоматически выводить '/ blah'. Это может звучать не очень интересно; но если позже вы измените маршрут на «/ foo», то метод link () может автоматически изменить вывод на «/foo» .

Другая причина: с помощью массива вы можете создать URL программным способом. Это не просто контроллер и действие, у вас также есть префикс, именованные параметры, ваши собственные пользовательские параметры, если вы создаете в маршрутах и ​​т. Д.

For now, I am using HtmlHelper::url() method with a regular <a> to display all of my links, to keep my template clean! Ну, тогда ты усложняешь себе:)

2 голосов
/ 17 сентября 2011

Это обеспечивает последовательный и гибкий метод для создания гиперссылок, ссылки на контроллеры / действия и определения динамического options через ассоциативные массивы. Производительность не должна быть проблемой, если вы не создаете итеративные ссылки. Даже в этом случае управление массивами и их имплозия обычно намного эффективнее, чем конкатенация строк.

...