我不喜欢Html-> link()方法。我很欣赏它,但它解读了代码,我不相信那些基本的东西应该需要一个方法。但是,在我的项目中,如果我想拥有正确的URL,我发现必须使用它。我会接受这一点,但我想知道我必须继续在这个(大型)项目中建立链接。
我试图find some ways在视图中获取cakeURL。什么都没有成功。
我的目标是从中走出来:
<?=$this->Html->link('quality view', array('controller' => 'quals', 'action' => 'show')); ?>
对此:
<a href="<?=URL.'quals/show'?>">
但是如果我改变页面的URL,我就无法编写或找到一种方法来获得这样的常量。 (甚至像访问/ quals /和/ quals这样的东西会显示不同的URL)
答案 0 :(得分:2)
我也不喜欢链接方法,我觉得在我的链接中添加class,id和target =“_ blank”等属性有点过分。
我这样做是为了链接:
<a class="myclass" href="<?php echo $this->Html->url(array('controller'=>'my_controller','action'=>'my_action','plugin'=>false)); ?>">My Anchor Text</a>
所以,我仍然使用HTML助手来获取URL,但是我自己编写的html元素。我建议这样做,而不是硬编码URL。这是Cake的方法,它允许您在routes.php中充分利用Cake的内置路由功能,并创建漂亮的路由,而无需在多个地方进行硬编码或记忆。
它还可以让其他人在将来查看您的代码变得更容易 - 例如。硬编码的“quals / show”链接是否指向webroot中的quals / show目录?或者它是指quals控制器的show动作? (当你开始使用插件时,它只会变得更复杂)。如果您使用html帮助程序创建URL,那么所有这些内容都会立即清除。
如果你想让它看起来整洁,你可以把它分成两行:
<?php $url = $this->Html->url(array('controller'=>'my_controller','action'=>'my_action','plugin'=>false)); ?>
<a class="myclass" href="<?php echo $url; ?>" >My Anchor Text</a>
如果您有一个大型项目,那么使用Cake的帮助程序更有理由使用URL。现在看来这似乎是一个好主意,但是对它们进行硬编码会让你在将来的某个时刻头疼。
答案 1 :(得分:1)
使用HtmlHelper::link()
确实存在非常严重的问题!
当您使用HtmlHelper构建链接时:
Config/routes.php
中定义的URL结构相同。当您更改某些内容时,网站中的所有链接都将自动反映这些更改因此,如果您使用它,您可以通过微小的更改来更改应用程序的结构,否则如果您更改了一个链接,则必须遍历它所使用的所有位置并手动更改。
正如@ joshua.paling所说,对URL进行硬编码并不是一个好主意,因为对于结构的任何改变你都会有很多麻烦。最好使用HtmlHelper的link()和/或url()方法。