Hello, here is my structure (app-advanced):
Module CronTask under folder "modules";
CronTask
console\modules\crontask\CronTask.php
<?php
namespace console\modules\crontask;
use yii\base\BootstrapInterface;
use yii\base\Module;
use yii\console\Application;
class CronTask extends Module implements BootstrapInterface
{
public $controllerNamespace = 'console\modules\crontask\controllers';
public function init()
{
parent::init();
}
public function bootstrap($app)
{
if ($app instanceof Application) {
$this->controllerNamespace = 'console\modules\crontask\controllers';
}
}
}
CronTaskController
console\modules\crontask\controllers\CronTaskController.php
<?php
namespace console\modules\crontask\commands;
use yii\console\Controller;
class CronTaskController extends Controller
{
public function actionIndex()
{
echo 'teste';
}
}
Config
console\config\main.php
<?php
$params = array_merge(
require(__DIR__ . '/../../common/config/params.php'),
require(__DIR__ . '/../../common/config/params-local.php'),
require(__DIR__ . '/params.php'),
require(__DIR__ . '/params-local.php')
);
return [
'id' => 'app-console',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log', 'crontask'],
'controllerNamespace' => 'console\controllers',
'modules' => [
'crontask' => [
'class' => 'console\modules\crontask\CronTask'
]
],
'components' => [
'log' => [
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
],
'params' => $params,
];
Error StackTrace:
//Test, next code have same output
yii crontask/crontask/index
//Test, previous code have same output
yii crontask/cron-task/index
//Output stacktrace;
Exception 'yii\base\UnknownMethodException' with message 'Calling unknown method
: yii\console\Request::getPathInfo()'
in C:\xampp\htdocs\prosind\vendor\yiisoft\yii2\base\Component.php:285
Stack trace:
#0 C:\xampp\htdocs\prosind\vendor\yiisoft\yii2\web\UrlManager.php(231): yii\base
\Component->__call('getPathInfo', Array)
#1 C:\xampp\htdocs\prosind\vendor\yiisoft\yii2\web\UrlManager.php(231): yii\cons
ole\Request->getPathInfo()
#2 C:\xampp\htdocs\prosind\common\behaviors\BeginRequestBehavior.php(72): yii\we
b\UrlManager->parseRequest(Object(yii\console\Request))
#3 C:\xampp\htdocs\prosind\common\config\main-local.php(24): common\behaviors\Be
ginRequestBehavior::checarAcesso(Object(yii\base\Event))
#4 [internal function]: {closure}(Object(yii\base\Event))
#5 C:\xampp\htdocs\prosind\vendor\yiisoft\yii2\base\Component.php(541): call_use
r_func(Object(Closure), Object(yii\base\Event))
#6 C:\xampp\htdocs\prosind\vendor\yiisoft\yii2\base\Application.php(372): yii\ba
se\Component->trigger('beforeRequest')
#7 C:\xampp\htdocs\prosind\yii(30): yii\base\Application->run()
#8 {main}
I moved the module crontask to "common" directory, but have the same problem.
Anyone have idea what is occurring?
How solve it?
Same problem to use "yii cache/ yii migrate/ yii…"
Thank you