我正在使用 PHP Mailer,我在 app Controller 中有邮件功能,我想在 shell 文件中访问它以进行 cron 作业。
任何人都可以指导我如何做到这一点?
谢谢
我正在使用 PHP Mailer,我在 app Controller 中有邮件功能,我想在 shell 文件中访问它以进行 cron 作业。
任何人都可以指导我如何做到这一点?
谢谢
抱歉,这太晚了,但如果它在此之前就在这里,它会对我有所帮助,所以对于未来的观众:
借用CakePHP 的一个稍微不同的情况:以数组作为参数调用另一个控制器的动作的最佳方法?:
到目前为止,这对我有用(还没有在控制器中尝试过更复杂的事情):在 .../app/Console/Command/BillsShell.php 中:
App::import('Controller', 'Billing');
class BillsShell extends AppShell {
public function main() {
$billing = new BillingController();
$billing->constructClasses(); //I needed this in here for more complicated requiring component loads etc in the Controller
$billing->test();
}
}
在 BillingController.php 中:
class BillingController extends AppController {
function test() {
echo "****Big test!!!*****\n\n";
}
}
对于蛋糕 2.1.3:
$> .../app/Console/php cake.php bills
Welcome to CakePHP v2.1.3 Console
---------------------------------------------------------------
App : app
Path: .../app/
---------------------------------------------------------------
****Big test!!!*****
您应该使用 Cakephp Shell 在 cron 中执行某些操作。如何在 cake php 中设置 cronjobs?.
编辑:如果您需要在控制器和外壳中使用某些东西,我建议将其移至组件。在你的外壳中,你可以做
App::import('Component', 'Meteor');
$this->Meteor = new MeteorComponent();
$this->Meteor->flash('New York');
在控制器中
$components = array('Meteor');
public function your_action() {
// code
$this->Meteor->flash('Paris');
}
这是:
App::uses('CakeRequest', 'Network');
App::uses('CakeResponse', 'Network');
App::uses('Controller', 'Controller');
App::uses('AppController', 'Controller');
$controller = new AppController(new CakeRequest(), new CakeResponse());
=> $controller 是你的
Shell官方文档中似乎没有直接调用Controller的方法,我们可以在这里做一个工作,我们可以从Shell调用Model,在Model中我们可以调用Controller。
贝壳:
public function main() {
App::import('Model', 'UserModel');
$this->UserModel = ClassRegistry::init('UserModel');
$this->UserModel->callModel();
}
模型:
function callModel($created) {
App::import('Controller', 'Pages');
$something = new PagesController;
$something->callMe();
}
控制器:
public function callMe(){
echo "Finally, Controller method is called\n";
}
仅供参考:这只是一种解决方法。