0

我不喜欢 Html->link() 方法。我很欣赏它,但它使代码变得丑陋,我不相信如此基本的东西应该需要一种方法。但是,在我的项目中,我发现如果我想拥有正确的 URL,我必须使用它。我会接受这一点,但我想知道在继续在这个(大型)项目中建立链接之前我必须这样做。

我试图找到一些在视图中获取 cakeURL 的方法。什么都没解决。

我的目标是从此开始:

<?=$this->Html->link('quality view', array('controller' => 'quals', 'action' => 'show')); ?>

对此:

<a href="<?=URL.'quals/show'?>">

但是,如果我更改页面的 URL,我将无法编写或找到一种方法来使这种持续工作。(即使是访问 /quals/ 和 /quals 也会显示不同的 URL)

4

2 回答 2

2

我也不喜欢链接方法,我发现在我的链接中添加类、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 的做法,它允许您充分利用 Cake 在 routes.php 中的内置路由功能,并创建漂亮的路由,而无需在多个地方硬编码或记住它们。

它还使其他人将来更容易查看您的代码 - 例如。硬编码的“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 助手。现在这似乎是一个好主意,但硬编码它们会在未来的某个时候让你头疼。

于 2013-01-31T05:41:16.260 回答
1

使用时实际上有非常严重的考虑HtmlHelper::link()

当您使用 HtmlHelper 构建链接时:

  • 您有一个中央平台来定义应用程序中的所有路线。URL 结构将始终与Config/routes.php. 当您更改某些内容时,网站中的所有链接都会自动反映这些更改
  • 反向路由
  • 易于应用维护
  • 搜索引擎优化/站点地图

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

正如@joshua.paling 所说,对 URL 进行硬编码不是一个好主意,因为对结构进行任何更改都会让您头疼。最好是使用 HtmlHelper 的link()和/或url()方法。

于 2013-01-31T10:44:04.457 回答