gpt4 book ai didi

cakephp - 从 cakePHP 中的 Controller 输出超链接

转载 作者:行者123 更新时间:2023-12-02 14:23:38 26 4
gpt4 key购买 nike

我刚刚开始使用 cakePHP,到目前为止事情进展得不太顺利。

我有一个 Controller 来处理确认用户电子邮件。注册时,用户会收到一封电子邮件,其中包含确认代码的链接。根据他们提供的确认代码, Controller 会给出不同的文本响应。这些响应之一包含用于登录的超链接。

我正在尝试使用 Html 帮助器,但尽管我已将其加载到类顶部的 $helpers 中,但只有使用 App::import 并实例化它,我才能使其工作。

仅仅创建一个超链接似乎有些过分了!我必须加载同一个类多少次?

无论我在网络上的任何地方查看,它都会告诉我在 Controller 中使用助手是一个坏主意,但是我还应该如何获得链接呢?

所以我有

var $helpers = array('Html');

位于 Controller 顶部,并且:

if (isset($this->User->id)) { // Check the user's entered it right
// Do some stuff to remember the user has confirmed
// This is to load the html helper - supposedly bad form, but how else do I make the link?
App::import('Helper', 'Html');
$html = new HtmlHelper();
$this->set('message', __("Your email address has been confirmed.", TRUE)." ".$html->link(__("Please log in", TRUE), array('controller' => "users", 'action' => "login" )));
} else {
$this->set('message', __("Please check your mail for the correct URL to confirm your account", TRUE));
}

在 Controller 的确认方法中和

<div>
<?php echo $message;?>
</div>

在 View 中输出结果消息

我肯定在某个地方出错了 - 谁能解释一下怎么回事?

最佳答案

您不应该在 Controller 中使用助手。正如@Lincoln 指出的,您应该在 View 中构建链接。您可以在 Controller 中构造 URL,因为 URL 基本上是数据,但链接是 URL 的非常特定于介质的 (HTML) 实现。

无论哪种方式,如果您想通过电子邮件发送,都需要创建完整 URL(包括主机)。最通用的方法是使用 Router::url:

$fullUrl = Router::url(array('controller' => ...), true); // 'true' for full URL

在 Controller 或 View 中执行此操作。要创建链接,请在 View 中使用它:

echo $html->link('Title', $fullUrl);

关于cakephp - 从 cakePHP 中的 Controller 输出超链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3808883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com