【问题标题】:Should I use array or string in link param in CakePHP HtmlHelper?我应该在 CakePHP HtmlHelper 的链接参数中使用数组还是字符串?
【发布时间】:2011-09-17 04:39:54
【问题描述】:
CakePHP HtmlHelper link() 方法接受两种类型的变量作为第二个参数(链接 URL 参数)。
现在我想知道是否使用数组作为参数,比如
array('controller'=>'users','action'=>'login')
比使用字符串慢,例如'/users/login'。因为 Helper 不必解析数组,只需显示链接即可。
如果是这样,那么link()方法的目的是什么?现在,我使用HtmlHelper::url() 方法和常规<a> 来显示我的所有链接,以保持我的模板干净!
请纠正我:)
【问题讨论】:
-
感谢您的回答。我发现了一个类似的问题here,并决定像以前一样将 Helpers 用于链接和图像。
标签:
php
cakephp
html-helper
【解决方案1】:
一个原因是反向路由:例如,如果您将 '/blah' 路由到数组('controller'=>'articles','action'=>'index')。当你用array('controller'=>'articles','action'=>'index') 创建链接时,cake 可以自动输出'/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】:
这为创建超链接、引用控制器/动作和通过关联数组指定动态options 提供了一致且灵活的方法。除非您迭代地创建链接,否则性能应该不是问题。即便如此,数组管理和内爆通常比字符串连接更有效。