5

このコードは以下を出力します:

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.
      }

}

4

3 に答える 3

2

おそらくコントローラーにこれがあるはずです:

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();
   }
}

次に、上記のコードのテンプレートと同じ名前の電子メールテンプレートをviews / elements / email/htmlに作成します。この例では、your_template.ctpです。メッセージを希望どおりに作成し、リンクを表示する場所に使用します。

$this->Html->link('Link name', $pwrurl, array('target' => '_blank'));

うまくいけば、それがお役に立てば幸いです。

于 2012-08-15T19:55:18.060 に答える
1

ここから:

$pwrurl = '<a href="http://' . $_SERVER['SERVER_NAME'] ."/users/otpregister/".$email_user."&code=".$codeLink.'"> Registration link</a>'; 
于 2012-08-15T17:40:46.777 に答える
0

上記のコードの代わりに、次のコードを使用してみてください。

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は、モデルではなく、コントローラーの有効なデータメンバーであるためです。またsendEmail()、AppController.phpにメソッドを記述し、このメソッドを使用してコントローラーのメソッドに呼び出すこともできます。$this->sendEmail($user_email, $code);

このドキュメントページは、同じことを達成するのに役立つ場合があります。

それがあなたのために働くことを願っています。

于 2012-08-14T04:24:56.883 に答える