首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yii2 Basic:从控制器操作运行命令

Yii2 Basic:从控制器操作运行命令
EN

Stack Overflow用户
提问于 2017-03-10 11:30:28
回答 1查看 2.4K关注 0票数 0

如何在基本模板中从控制器操作中运行命令?

我试过How to run console command in yii2 from web

这是失败的:

代码语言:javascript
复制
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"?

司令部:

代码语言:javascript
复制
<?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 <qiang.xue@gmail.com>
 * @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";

    }

}

请帮帮我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-10 12:37:02

发生这种情况有两个原因。

  1. 您没有将'controllerNamespace'设置为'app\commands'
  2. 'basePath'的值是错误的。如果您是从SiteController运行这个值,那么这个值应该是__DIR__ . '/../'

我建议你做点不同的事。让我们再说一遍,假设您是从SiteController运行的,我会这样做:

代码语言:javascript
复制
    $config  = require(__DIR__ . '/../config/console.php');
    $console = new \yii\console\Application($config);

这样,您将使用与运行./yii hello/index时相同的配置

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42717342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档