0

これは私を怒らせ始めています(すでに持っているかもしれません)!組み込みの CakePHP の CakeEmail の使用方法については、多くのヘルプがないようです。

私はこのサイトで多くの投稿を見つけました.ユーチューブのビデオも役に立ちましたが、説明している人は英語でスペックしていなかったので、時々彼に従うのが少し難しかったです.

内部に基本的なフォームを含むビュー ファイルがあります。これは、コントローラー内の send() 関数に対応していますが、エラーしか発生しません。

これが私の現在のコードです:

アップデート ::

私が得ているエラーは、

     Undefined index: to [APP/Controller/ContactController.php, line 26]

     Error: Call to a member function subject() on a non-object 
     File: /var/www/app/Controller/ContactController.php    
     Line: 27

よくわかりませんが、私は CakeEmail に電話しましたよね? コードを正しくコピーしましたが、送信元を送信するたびにエラーが発生します。

ありがとうグレン。

別の更新::

以前からコードを削除しましたが、動作するようになりました (一種の)

//新しい連絡先.cpt

echo $this->Form->create(array('controller' => 'contact', 'url' => '/contact/send') );
echo $this->Form->input('ContactForm.to');
echo $this->Form->input('ContactForm.subject');
echo $this->Form->input('ContactForm.message', array('type' => 'textarea') );
echo $this->Form->submit('Email Us', array('class' => 'Button'));
echo $this->Form->end();

//新しいコントローラー

public function send() {

    if ( !empty($this->request->data) ) {
        $email = new CakeEmail();
        $email->config('default');
        $email->from(array('contact@me.com' => 'ME'))
              ->to('contact@me.com')
              ->subject($this->request->data['ContactForm']['subject']);
        if ( $email->send($this->request->data['ContactForm']['message']) ) {
            $this->Session->setFlash(__('Email Sent...'), 'default', array('class' => 'success') );
        }

    }
    $this->render('/Contact/Contact');

} //End of function send

しかし、今私はレイアウトを変更したいのですが、私のフォームは

//これは私が欲しいものです ->

echo $this->Form->create(array('controller' => 'contact', 'url' => '/contact/send') );
echo $this->Form->input('ContactForm.name');
echo $this->Form->input('ContactForm.email');
echo $this->Form->input('ContactForm.phone');
echo $this->Form->input('ContactForm.subject');
echo $this->Form->input('ContactForm.message', array('type' => 'textarea') );
echo $this->Form->submit('Email Us', array('class' => 'Button'));
echo $this->Form->end();

名前、電子メール、電話番号を取得する必要がありますが、コントローラーの $email に追加すると、このエラーだけが表示されます

  error: Call to undefined method CakeEmail::name() 

//私が変更したコントローラーコードセクション

        $email->from(array('contact@me.com' => 'Me'))
              ->to('contact@me.com')
              ->name($this->request->data['ContactForm']['name']) <-That is the line I added!
              ->subject($this->request->data['ContactForm']['subject']);

これが正しい方法ではない場合、私はそうではありません.メールのレイアウトを変更して、必要なアイテムのリストを含めるにはどうすればよいですか. 私は CakeEmail ドキュメントを (何度も) 見てきましたが、あまり明確ではなく、デフォルトから変更する方法の作業コードを提供していません。

ありがとうグレン

4

1 に答える 1

1

コードにいくつかの単純なエラーがあります。

これは間違っています

->to($this->request->data['to'])

debug($this->request->data)配列の構造を見る

エラーがUndefined index: to [APP/Controller/ContactController.php, line 26]発生しましたが、コードでインデックスを参照しているものは何も表示されません。これを作成しているか、正しいコードを貼り付けていません。$this->request->dataおそらく私が言及した問題と同じ問題だと思います。

于 2013-05-30T07:14:00.537 に答える