В CAKEPHP Проверьте содержимое всего просмотра и отправьте почту, если не в порядке - PullRequest
0 голосов
/ 16 ноября 2018

С cakephp 2.9 мне нужно это:

Я должен проверить, есть ли определенный тег на странице, которая появляется.

, если он присутствует, не должен делать что-либо еще, должен отправитьмне письмо.

На данный момент я думаю создать помощника и вызвать метод в default.ctp

с чем-то вроде:

$s = this-> fetch (‘content’);
$result_check = $this->myHelper->debug_content ($s); 
echo $s;

В myHelper функция:

public function debug_content( $s) { 
  $pos = strpos ( $s, "<div class = \"box-body\">"); 
  if ( $pos === false) { echo “Error tag is not present!”; 
  return false; 
}

В AppController :

public $helpers = array (…, ‘myHelper’);

и до этого, хорошо… носейчас?

Как я могу вспомнить компонент Email (персонализированный мной), чтобы отправить электронное письмо?

И как мне его назвать?

Как бы вы поступили?

Спасибо,

Макс

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Реализуйте прослушиватель для события View.afterRenderFile и посмотрите, решит ли это проблему.Посмотрите на исходный код класса View, . Вы можете увидеть , что этот обратный вызов получает имя файла представления и оцененное содержимое во время вызова View::render().Затем вы можете использовать этот прослушиватель для проверки содержимого вашего тега и при необходимости отправить это электронное письмо.

0 голосов
/ 20 ноября 2018

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

 App::uses('CakeEmail', 'Network/Email');

public function debug_content( $s) { 
  $pos = strpos ( $s, "<div class = \"box-body\">"); 
  if ( $pos === false) { echo “Error tag is not present!”; 
 $Email = new CakeEmail();
 $Email->emailFormat('html');
 $Email->template('default');
 $Email->from('sending@adress.com');
 $Email->to('receiving@adress.com');
 $Email->subject('YOUR SUBJECT');
 $Email->send();
  return false; 
}
...