我正在教自己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>
这位助手到底得到了什么?两者似乎都很容易写。
答案 0 :(得分:2)
在评论中,乔治已经提到了documentation的摘录:
HtmlHelper在CakePHP中的作用是制作与HTML相关的选项 更容易,更快速,更有弹性。使用这个助手会 使您的应用程序更轻松,更轻松 灵活地放置相对于域根的位置。
但是这又错过了另一个非常重要的观点:如果你想要to use routing,你将无法使用它而不使用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'));
使用帮助程序的另一个可靠理由是,当应用程序未设置为在主机的根目录中工作时,会正确生成指向您应用程序的链接。
答案 1 :(得分:0)
HTML帮助程序中的link
方法非常方便,可以避免在视图中对URL进行硬编码。具有...
<a href="/shop_products/view/1">Product Name</a>
...如果你在路线文件中添加一个自定义路线来处理上面的/t-shirts/blue-t-shirt
之类的东西,那就不好了。而如果您使用数组语法...
<?php echo $this->Html->link('Product Name', array(
'controller' => 'shop_products',
'action' => 'view',
$product['ShopProduct']['id']
)); ?>
...然后HTML路由将使用反向路由并根据需要删除URL格式。不再更新应用程序视图中的链接URL。