Run plugin's shell in cakephp 2.0

2019-05-03 07:13发布

问题:

I have created a new CakePHP 2.0 app and want to run a plugin's shell.

<?php
// app\Plugin\Tmaker\Vendors\Shells\TmakerShell.php
class TmakerShell extends Shell {  
}

However, I can't see it when running Console/cake from the command-line.

Please advise my what I have missed?

回答1:

According to the latest documentation, the path for shells has changed to app/Console/Command/.

Move your shell to the following location: app/Plugin/Tmaker/Console/Command/TmakerShell.php (not sure if plugin directory names are camel-cased in CakePHP 2.0, but it seems to work either way.)

<?php
class TmakerShell extends Shell {
    public function main() {
        $this->out('It works!');
    }
}

As CakePHP 2.0 requires you to load plugins manually, you also need to update app/Config/bootstrap.php by adding CakePlugin::loadAll(); or CakePlugin::load('Tmaker'); to the last line.

You should then be able to access your shell from the command-line. It looks like this in Windows:

C:\xampplite\htdocs\cake2\app>..\lib\Cake\Console\cake Tmaker.tmaker

Welcome to CakePHP v2.0.0-beta Console
---------------------------------------------------------------
App : app
Path: C:\xampplite\htdocs\cake2\app\
---------------------------------------------------------------
It works!