2012-01-22 7 views
0

私はユーザーが自分が閲覧している記事を電子メールで送信することができる場所を開発中です。私はこれを処理するためにAjaxを使用しています。基本的に、ユーザは自分の電子メール/名前と、そのメッセージが送信されるはずの人の電子メールを追加する。私はcakephp関数に一連のデータを渡す際に問題が発生しています。データは配列内に正確に配置されていますが、私のCakePHP関数、特に送信されている電子メールではそれを見ることができません。CakePHP 1.3:Ajaxを使用した電子メールフォームの処理

私のJavascriptのコード

var dataString = new Array(); 
      dataString[0] = name; 
      dataString[1] = email; 

    // This will display Joe Schmoe, [email protected] 
    alert(dataString); return false; 

     $('#contact-area').html("<div id='Sending' style='margin-left:410px;color:red;border:1px solid red'>Enviando...Por favor, aguarde um momento!</div>"); 


    $.ajax({ 
    type: "POST", 
    url: "/articles/enviar", 
    data: dataString, 
    success: function() { 
    $('#Sending').hide(); 
    $('#contact-area').html("<div id='message' style='margin-left:410px;color:red;border:1px solid red'></div>"); 
    $('#message').html("<h3>A Sua Mensagem Ja Foi Enviada!</h3>") 
    .append("<p>Obrigado.</p>") 
    .hide() 

私のコントローラのアクション

function enviar(){ 
//debug($emailInfo); 
     // Send email with new password 
    $this->Email->to = '[email protected]';//testing without array 
    $this->Email->subject = 'Hello';//$emailInfo['name'].' - Noticia Na Bravanews'; 
    $this->Email->from = '[email protected]';//testing without array 
$this->Email->sendAs = 'html'; 
$this->Email->template = 'enviar_email'; 
$this->Email->smtpOptions = array(
    'port'=>'465', 
    'timeout'=>'30', 
    'host' => 'ssl://smtp.gmail.com', 
    'username'=>'[email protected]', 
    'password'=>'xxxxxxxx' 
); 
$this->Email->delivery = 'smtp'; 


    // this displays as nothing 
$this->set('emailInfo', $this->data); 


if($this->Email->send()){ 
    return true; 
}else{ 
    return false; 
} 
} 

そして、私の電子メールテンプレート

Hello,<br /> 
<?php e($emailInfo[0]); ?> sugeriu que leias a seguinte notícia na Bravanews.<br> 
<?php e($emailInfo[1]); ?><br> 
Por favor clique no link abaixo:<br /><br> 
<?php debug($emailInfo); ?> 

どのように私はこの問題を修正行くのです。私は電子メールのテンプレートに何も転記することができないので、私は印刷するか電子メールで送ることができます。

答えて

1

あなたはの$ this - >データでそれらを見つけることができるようにデータをという名前の配列で変数を送信する必要があります。

その他のCakePHP 1.3では、$ this-> set()を使用して、ビューにパラメータを渡すことはできません。私にとっては、Email CakePHPコンポーネントに基づいて独自のコンポーネントを作成して、ビューにパラメータを渡すことができます。

 data : {'data[Model][email]' : email, 'data[Model][name]' : name}, 
+0

ありがとう。これはまさに私が間違っていたことです。すべてがうまくいき、私は自分の電子メールテンプレートでフォームデータを読み書きできます。すばらしいです!私は、[Model]を使う必要はありませんでしたが、同じことはかなり... data:{'data [email]':電子メール、 'data [name]':name} –

1

データは$ this-> dataで利用できるはずです。これは当てはまりませんか?

問題がなければ、Ajaxコールでデータを送信しないでください。おそらく、あなたはレイアウトjqueryが使用していないと予想しています。

+0

私のjavascriptコードでデータを正しく渡していませんでした。とにかくおかげで.. –

関連する問題