2017-03-10 69 views
0

如何從基本模板中的控制器操作運行命令?Yii2基本:從控制器運行命令行動

我試圖How to run console command in yii2 from web

這種失敗:以上

public function actionTest(){ 
    $oldApp = \Yii::$app; 
    $console = new \yii\console\Application([ 
     'id' => 'basic-console', 
     'basePath' => '@app/commands', 
     'components' => [ 
      'db' => $oldApp->db, 
     ], 
    ]); 
    \Yii::$app->runAction('hello/index'); 
    \Yii::$app = $oldApp; 
} 

顯示我Unknown command: hello/index Did you mean "help/index"?

命令:

<?php 
/** 
* @link http://www.yiiframework.com/ 
* @copyright Copyright (c) 2008 Yii Software LLC 
* @license http://www.yiiframework.com/license/ 
*/ 

namespace app\commands; 

use yii\console\Controller; 

/** 
* This command echoes the first argument that you have entered. 
* 
* This command is provided as an example for you to learn how to create console commands. 
* 
* @author Qiang Xue <[email protected]> 
* @since 2.0 
*/ 
class HelloController extends Controller 
{ 
    /** 
    * This command echoes what you have entered as the message. 
    * @param string $message the message to be echoed. 
    */ 
    public function actionIndex($message = 'hello world') 
    { 
     echo $message . "\n"; 

    } 

} 

請幫幫忙!

回答

1

發生這種情況有兩個原因。

  1. 您沒有將'controllerNamespace'設置爲'app\commands'
  2. 'basePath'的值是錯誤的。如果從SiteController運行此值應該是__DIR__ . '/../'

我建議做一點不同。運行./yii hello/index

$config = require(__DIR__ . '/../config/console.php'); 
    $console = new \yii\console\Application($config); 

這種方式,您將使用相同的配置爲:再一次,可以說你是從SiteController運行它,我會做這樣的

相關問題