CakePHP 1.3: обработка формы электронной почты с использованием Ajax - PullRequest
0 голосов
/ 22 января 2012

У меня есть приложение, которое я разрабатываю, где пользователю разрешено отправлять по электронной почте статью, которую он / она просматривает. Я использую Ajax для обработки этого. В основном пользователь добавляет свой адрес электронной почты / имя и адрес электронной почты человека, которому должно быть отправлено сообщение. У меня проблема с передачей массива данных в мою функцию cakephp. Данные точно помещаются в массив, но я не вижу их в моей функции CakePHP, а именно в отправляемом электронном письме.

Мой код JavaScript

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

    // This will display Joe Schmoe, email@domain.com
    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()

My Controller Action

function enviar(){  
//debug($emailInfo);
        // Send email with new password
    $this->Email->to = 'xxxxxxx@yahoo.com';//testing without array
    $this->Email->subject = 'Hello';//$emailInfo['name'].' - Noticia Na Bravanews';
    $this->Email->from = 'xxxxxx@bravanews.com';//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'=>'xxxxx@gmail.com',
    '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); ?>

Как мне решить эту проблему? Я не могу ничего перенести в шаблон электронной почты, чтобы можно было распечатать или отправить по электронной почте ...

Ответы [ 2 ]

1 голос
/ 23 января 2012

Вы должны отправить переменные в массиве с именем data , чтобы их можно было найти в $ this-> data .

Иначе в CakePHP 1.3 вы не можете передавать параметры в представление, используя $ this-> set () . Для меня я создаю свой собственный компонент на основе компонента Email CakePHP, чтобы дать возможность передавать параметры в представление.

       data : {'data[Model][email]' : email, 'data[Model][name]' : name},
1 голос
/ 22 января 2012

Данные, отправляемые браузером, должны быть доступны в $ this-> data. Разве это не так?

Если проблема не в том, что вызов Ajax не отправляет данные. Может быть, вы не используете макет, который ожидает JQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...