使用Shell调用前端控制器yii2不工作

pgky5nke  于 2022-11-09  发布在  Shell
关注(0)|答案(3)|浏览(138)

我是Yii2框架的新手,我正在尝试调用我的控制器,它在下面的前端文件夹中

htdocs/project/frontend/controllers/MyController.php

要调用的方法是

actionTest_method()

在终端中(在项目根目录中),我正在编写

php yii my/test_method

我试过了

php yii frontend/controllers/my/test_method

但没有工作错误,我得到InvalidRouteException

h79rfbju

h79rfbju1#

首先,你不需要从控制台调用前端控制器。如果你想这样做,你可以用一个带有以下URL模式的curl命令。Yii2 URL routing

curl GET 'example.com/my/action-name'

但是,根据Yii2指南,您可以使用console commands从控制台运行脚本。
因此您的控制器应该位于commands目录中。
这是Yii2基本应用模板的helloController.php

<?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;
use yii\console\ExitCode;

/**
 * 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.
     * @return int Exit code
     */
    public function actionIndex($message = 'hello world')
    {
        echo $message . "\n";

        return ExitCode::OK;
    }
}

正如你所看到的,这扩展了yii\console\Controller,它具有运行带有Yii2特性的控制台命令的能力。
使用此示例代码。您只需运行

php yii hello

脚本将输出

hello world

在您的示例中,创建一个MyController.php类来扩展commands目录中的yii\console\Controller
请输入以下代码。

<?php

    namespace app\commands;

    use yii\console\Controller;

    class MyController extends Controller
    {

        public function actionTest_method()
        {
            echo 'I am test method';

        }
    }

并且运行了

php yii my/test_method

在根目录中。

pxiryf3j

pxiryf3j2#

小记:如果是“高级”模板-控制台控制器位于“console”文件夹中,否则如果是“基本”模板-位于“command”文件夹中

yfwxisqw

yfwxisqw3#

您的控制台控制器必须位于htdocs/project/console/controllers/中。另外,请检查控制台配置中的controllerNamespace

相关问题