此代码输出:
Call to a member function link() on a non-object
我想要的是通过电子邮件发送链接。代码有什么问题?谢谢
class User extends AppModel {
public $helpers = array('Html');
public function sendEmail($email_user, $code) {
$email = new CakeEmail();
$email->config('smtp');
$pwrurl = "http://xxx/users?se=check&mail=".$email_user."&code=".$code;
$link = $this->Html->link('Link name', $pwrurl, array('target' => '_blank'));
$email->from(array('xxxn@gmail.com' => 'xxxx'))
->to($email_user)
->emailFormat('html')
->send('My message:: '.$link);
return true;
}
}
文档
更新:我收到相同的错误。
App::uses('CakeEmail', 'Network/Email');
App::uses('AppHelper', 'View/Helper');
class AppController extends Controller {
public $helpers = array('Form', 'Html');
public function sendEmail($email_user, $codeLink) {
//same code.
}
}
控制器中可能应该有这个:
class UsersController extends AppController {
var $name = 'Users';
var $helpers = array('Html');
var $components = array('Email');
function _email($email_user, $code){
$pwrurl = "http://xxx/users?se=check&mail=".$email_user."&code=".$code;
$this->Email->from = 'From: Someone';
$this->Email->to = $email_user;
$this->Email->subject = 'Your Subject';
$this->Email->sendAs = 'html';
$this->Email->template = 'your_template';
$this->set('pwrurl', $pwrurl);
$this->Email->send();
}
}
然后在视图/元素/电子邮件/html 中创建一个电子邮件模板,其名称与上述代码中的模板相同。 对于此示例,your_template.ctp。 按照您希望其外观的方式以及您希望链接显示的位置撰写消息,请使用:
$this->Html->link('Link name', $pwrurl, array('target' => '_blank'));
希望这有所帮助。
从这里:
$pwrurl = '<a href="http://' . $_SERVER['SERVER_NAME'] ."/users/otpregister/".$email_user."&code=".$codeLink.'"> Registration link</a>';
您可以尝试使用以下代码代替上述代码:
App::uses('HtmlHelper', 'View/Helper');
class User extends AppModel {
public function sendEmail($email_user, $code) {
$email = new CakeEmail();
$email->config('smtp');
$pwrurl = "http://xxx/users?se=check&mail=".$email_user."&code=".$code;
$link = $this->Html->link('Link name', $pwrurl, array('target' => '_blank'));
$email->from(array('xxxn@gmail.com' => 'xxxx'))
->to($email_user)
->emailFormat('html')
->send('My message:: '.$link);
return true;
}
}
因为$helpers
是控制器的有效数据成员,而不是模型的有效数据成员。在 AppController 中编写 sendEmail()
方法也是一个很好的替代方法.php并使用 $this->sendEmail($user_email, $code);
将此方法调用到控制器的方法中
此文档页面可能会帮助您实现相同的目标。
希望它能为你工作。