我曾多次尝试过这种错误,并尝试了一种解决方案: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');
}
}
}
答案 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');