是否可以将内置CakePHP组件(例如:EmailComponent
)用作独立类?
我知道这可能显示出一个设计缺陷,而且我不是以Cake方式做某事,但是我有一个类与任何模型/控制器无关,我希望能够发送电子邮件。导入EmailComponent不起作用,因为它试图从$this->Controller
读取信息,在这种情况下显然为空。
有什么建议吗?
答案 0 :(得分:4)
App::import('Core', 'Controller');
App::import('Component', 'Email');
$this->Controller =& new Controller();
$this->Email =& new EmailComponent(null);
$this->Email->initialize($this->Controller);
见EmailComponent in a (cake) Shell的评论11,应该适合你。
答案 1 :(得分:1)
尝试使用App::import。
App::import('Component', 'Email');
$email = new EmailComponent();
请注意,您可能需要在构造函数中将null
作为参数传递,因为我认为它通常可能需要引用控制器。这可能会导致与EmailComponent
定位布局和视图有关的问题,但您必须要玩。
答案 2 :(得分:0)
我很确定这样做的方法是让组件成为供应商,如果这不是太痛苦的话。然后它可以在代码库中的任何地方访问。您可以在beforeFilter中使用此代码,并将其用作控制器中的组件。
App::import('Vendor', 'EmailVendor');
$this->EmailVendor = new EmailVendor($this);