为什么我们需要CakePHP HTML链接助手?

为什么我们需要CakePHP HTML链接助手?,cakephp,cakephp-2.0,Cakephp,Cakephp 2.0,我正在自学CakePHP框架。我看到CakePHP附带了很多帮助程序,例如HTML帮助程序。在文档中,我看到你可以写 echo $this->Html->link('Enter', '/pages/home', array('class' => 'button', 'target' => '_blank')); 它将显示 <a href="/pages/home" class="button" target="_blank">Enter</a>

我正在自学CakePHP框架。我看到CakePHP附带了很多帮助程序,例如HTML帮助程序。在文档中,我看到你可以写

echo $this->Html->link('Enter', '/pages/home', array('class' => 'button', 'target' => '_blank'));
它将显示

<a href="/pages/home" class="button" target="_blank">Enter</a>


这个助手到底给我们带来了什么?两者似乎都同样容易写。

在评论中,乔治已经提到了以下内容的摘录:

HtmlHelper在CakePHP中的作用是生成与HTML相关的选项 更容易、更快、更能适应变化。使用此助手将 使您的应用程序更加轻巧,而且 在相对于域根的位置灵活

但这遗漏了另一个非常重要的一点:如果您想要使用它,那么如果不使用HtmlHelper的数组表示法,您将无法使用它

你的代码在这里

echo $this->Html->link('Enter', '/pages/home', array('class' => 'button', 'target' => '_blank'));
不适用于路由。对于站点上的链接,您应该始终使用数组表示法。因此,您希望:

echo $this->Html->link('Enter', array('controller' => 'pages', 'action' => 'home'), array('class' => 'button', 'target' => '_blank'));

使用帮助程序的另一个可靠原因是,当应用程序未设置为在主机根目录下工作时,会正确生成指向应用程序的链接

HTML帮助程序中的
链接
方法非常方便,可以避免在视图中对URL进行硬编码。有

<a href="/shop_products/view/1">Product Name</a>

…然后HTML路由将使用反向路由,并根据需要以URL格式删除。不再更新应用程序视图中的链接URL。

来自:“在CakePHP中,HtmlHelper的作用是使HTML相关选项更容易、更快、更易于更改。使用此帮助器将使应用程序更轻松,并且在相对于域根的位置上更灵活。”实施是一种选择。您可以使用CakePHP中最适合您的contention.HTML助手的方法,使HTML变得更简单、更快。它还通过提供格式良好的元素,为您提供了一种标准的代码练习方法。这些可以在Cakephp中缓存视图以提高性能。最明显的好处是,即使应用程序未安装到文档根目录(例如,如果安装到
foo/
,它会生成
),URL也将是正确的。为什么这个问题完全正确?书中的引用并没有真正解释为什么要使用它的所有背景,这不是我第一次看到有人问这个原因,至少在IRC里是这样。
<?php echo $this->Html->link('Product Name', array(
    'controller' => 'shop_products',
    'action' => 'view',
    $product['ShopProduct']['id']
)); ?>