1

我正在使用 PHP Mailer,我在 app Controller 中有邮件功能,我想在 shell 文件中访问它以进行 cron 作业。

任何人都可以指导我如何做到这一点?

谢谢

4

4 回答 4

5

抱歉,这太晚了,但如果它在此之前就在这里,它会对我有所帮助,所以对于未来的观众:

借用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!!!*****
于 2015-02-13T21:03:48.333 回答
2

您应该使用 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');
}
于 2013-04-04T11:58:58.023 回答
1

这是:

App::uses('CakeRequest', 'Network');
    App::uses('CakeResponse', 'Network');
    App::uses('Controller', 'Controller');
    App::uses('AppController', 'Controller');
    $controller = new AppController(new CakeRequest(), new CakeResponse());

=> $controller 是你的

于 2013-09-01T09:26:41.763 回答
1

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

仅供参考:这只是一种解决方法。

于 2017-05-19T05:26:38.723 回答