Перейти к содержанию
mazein

[Решено] public function выполняется не полностью

Рекомендуемые сообщения

Доброго дня.

Есть некая функция, которая выполняется при добавлении нового подписчика, вот она:

public function subscribe() {
условие{
$this->model_account_newslettersubscribe->subscribe($this->request->post);
echo('$("'.$prefix_eval.' #notification").html("<div class=\"success\"> '.$this->language->get('subscribe').'</div>");');
} else {
echo('$("'.$prefix_eval.' #notification").html("<div class=\"warning\"> '.$this->language->get('alreadyexist').'</div>");');
}
}

Если условие выполняется, подписчик попадает в базу, и должен происходить вывод echo, но вывод почему-то не происходит.

Если условие не выполняется, то echo (который warning) выводится нормально.

Если убрать строку выполнения записи, то echo выводится.

Собственно вопрос - что нужно сделать, чтобы в условии отрабатывали обе строки:

$this->model_account_newslettersubscribe->subscribe($this->request->post);
echo('$("'.$prefix_eval.' #notification").html("<div class=\"success\"> '.$this->language->get('subscribe').'</div>");');

Спасибо.

 

Вот вся функция:

	public function subscribe() {
	
		$prefix_eval = "";
	  
		$this->language->load('module/newslettersubscribe');
	 
		$this->load->model('account/newslettersubscribe');
	  
			if (isset($this->request->post['subscribe_email']) and filter_var($this->request->post['subscribe_email'],FILTER_VALIDATE_EMAIL)) {
	
				if(!$this->model_account_newslettersubscribe->checkmailid($this->request->post)){

					$this->model_account_newslettersubscribe->subscribe($this->request->post);
					
					echo('$("'.$prefix_eval.' #notification").html("<div class=\"success\"> '.$this->language->get('subscribe').'</div>");');
				
			        if($this->config->get('newslettersubscribe_mail_status')){

						$subject = $this->language->get('mail_subject');	
						
						$message = '<table width="60%" cellpadding="2"  cellspacing="1" border="0"> 
									 <tr>
									   <td> Email Id </td>
									   <td> '.$this->request->post['subscribe_email'].' </td>
									 </tr>
									 <tr>
									   <td> Name  </td>
									   <td> '.$this->request->post['subscribe_name'].' </td>
									 </tr>';
						$message .= '</table>';
			 
						$mail = new Mail();
						$mail->protocol = $this->config->get('config_mail_protocol');
						$mail->parameter = $this->config->get('config_mail_parameter');
						$mail->hostname = $this->config->get('config_smtp_host');
						$mail->username = $this->config->get('config_smtp_username');
						$mail->password = $this->config->get('config_smtp_password');
						$mail->port = $this->config->get('config_smtp_port');
						$mail->timeout = $this->config->get('config_smtp_timeout');				
						$mail->setTo($this->config->get('config_email'));
						$mail->setFrom($this->config->get('config_email'));
						$mail->setSender($this->config->get('config_name'));
						$mail->setSubject($subject);
						$mail->setHtml($message);
						$mail->send();
					}

				} else {

					  echo('$("'.$prefix_eval.' #notification").html("<div class=\"warning\"> '.$this->language->get('alreadyexist').'</div>");$("'.$prefix_eval.' #subscribe")[0].reset();');
				}
			   
			} else {

				echo('$("'.$prefix_eval.' #notification").html("<div class=\"warning\"> '.$this->language->get('error_invalid').'</div>")');

			}
	  
	} 
Изменено пользователем mazein

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

могу предположить что все падает на строке

$this->model_account_newslettersubscribe->subscribe($this->request->post);

из-за того что нету

$this->model->load('account/newslettersubscribe');

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

nikifalex, модель подгружается, функция записи в базу выполняется, т.е. строка

$this->model_account_newslettersubscribe->subscribe($this->request->post);

выполняется нормально, но вот вывод echo почему-то не происходит.

 

Если я убираю выполнение функции из модели, ну т.е. тупо делаю так:

//$this->model_account_newslettersubscribe->subscribe($this->request->post);
echo('$("'.$prefix_eval.' #notification").html("<div class=\"success\"> '.$this->language->get('subscribe').'</div>");');

то вывод echo происходит.

Не понятно, почему они не работают вместе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а в самой модели model_account_newslettersubscribe->subscribe что?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AlexDW, пожалуйста:

	public function subscribe($data) {
	  	   
		   $this->db->query(" INSERT INTO " . DB_PREFIX . "subscribe SET email_id='".$data['subscribe_email']."',name='".$data['subscribe_name']."' ,date= CURDATE() ");

	}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем, разобрался, в записи в базу участвовала ещё переменная subscribe_name, которая нигде не объявлена. Проглядел я её.

Всем спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

и что, в журнале ошибок - пусто? :-)

 

date нужно экранировать, а сами данные санитизить

 

$this->db->query(" INSERT INTO " . DB_PREFIX . "subscribe SET email_id='".(int)$data['subscribe_email']."',name='".$this->db->escape($data['subscribe_name'])."' ,`date`=CURDATE() ");

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

и что, в журнале ошибок - пусто? :-)

Когда смотрел, было пусто, потом чёт протупил, и не посмотрел, короче сам лоханулся.

Аж стыдно блин.

Изменено пользователем mazein

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.