CakePHP简单,易于链接

时间:2013-01-31 04:56:07

标签: php cakephp cakephp-2.0 constants cakephp-2.1

我不喜欢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)

2 个答案:

答案 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构建链接时:

  • 您可以通过一个中心来定义应用程序中的所有路径。 URL结构将始终与Config/routes.php中定义的URL结构相同。当您更改某些内容时,网站中的所有链接都将自动反映这些更改
  • 反向路由
  • 简单的应用程序维护
  • SEO / Sitemap产生

因此,如果您使用它,您可以通过微小的更改来更改应用程序的结构,否则如果您更改了一个链接,则必须遍历它所使用的所有位置并手动更改。

正如@ joshua.paling所说,对URL进行硬编码并不是一个好主意,因为对于结构的任何改变你都会有很多麻烦。最好使用HtmlHelper的link()和/或url()方法。