在CAKEPHP中检查所有视图的内容并发送邮件(如果不正确)

时间:2018-11-16 09:11:37

标签: cakephp cakephp-2.9

对于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’);

现在到这里好...但是现在?

我如何召回电子邮件组件(由我个性化)以发送电子邮件?

我在哪里叫它?

你会怎么做?

谢谢

最大

2 个答案:

答案 0 :(得分:0)

我不知道我是否正确回答了您的问题。但是您可以在检查标记的功能中实现所需的电子邮件发送功能。

 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; 
}

答案 1 :(得分:0)

Implement一个View.afterRenderFile事件的侦听器,看能否解决问题。查看View类的源代码you can see,该回调在调用View::render()期间接收视图文件名和评估的内容。然后,您可以使用此侦听器检查标签的内容,并在必要时发送该电子邮件。