在非对象上调用成员函数success()

时间:2016-03-05 10:24:41

标签: php cakephp-2.0

我曾多次尝试过这种错误,并尝试了一种解决方案:CakePHP: Call to a member function setFlash() on a non-object url ...但是这个解决方案在我的项目中也没有用。

无法识别错误是什么。 !!!

这是我的User.php模型

class User extends AppModel {

public $helpers = array('Html','Form');
public $components = array('Email','Flash','Session');


 public function send_mail($useremail){

    $Email = new CakeEmail('gmail');

    $Email->emailFormat('html')
          ->from('abc@xyz.com')
          ->to($useremail)
          ->subject('User subject');
    if($Email->send("123")){
        $this->Flash->success(__('Mail Sent')); // **this line cause error**
    }else{
        $this->Session->setFlash('Problem during sending email');
    }
}
}

1 个答案:

答案 0 :(得分:2)

正如文档所示, FlashComponent 提供了两种设置Flash消息的方法:bestMatch map {case (x, (y, count)) => (x, y)} 魔术方法及其 __call()方法。为了向您的应用程序提供详细程度,FlashComponent的set()魔术方法允许您使用映射到位于__call()下的元素的方法名称。按照惯例,camelcased方法将映射到小写和下划线元素名称:

  

//使用src / Template / Element / Flash / success.ctp

src/Template/Element/Flash directory
  

//使用src / Template / Element / Flash / great_success.ctp

$this->Flash->success('This was successful');

或者,要设置纯文本消息而不渲染元素,可以使用set()方法:

$this->Flash->greatSuccess('This was greatly successful');

因此,您需要通过键入

来更改它
$this->Flash->set('This is a message');