使用Shell调用前端控制器yii2无法正常工作

问题描述

我是Yii2 Framework的新手,我正试图调用位于下面的前端文件夹中的控制器

htdocs/project/frontend/controllers/MyController.php

我要调用的方法是

actionTest_method()

在Terminal(项目根目录中),我正在写

php yii my/test_method

我尝试过

php yii frontend/controllers/my/test_method 

但是没用 错误,我收到InvalidRouteException

解决方法

首先。您无需从控制台调用Frontend控制器。如果您想这样做。您可以使用带有以下URL模式的curl命令。 Yii2 URL routing

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

但是,根据Yii2指南,您可以使用console 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的{​​{1}}类。

输入以下代码。

yii\console\Controller

然后运行

<?php
   
    namespace app\commands;
    
    use yii\console\Controller;
    
    class MyController extends Controller
    {
       
        public function actionTest_method()
        {
            echo 'I am test method';
    
        }
    }

在根目录中。

,

您的控制台控制器必须位于htdocs / project / console / controllers / 还要检查您的控制台配置中的controllerNamespace

,

小注:如果它是“高级”模板-控制台控制器位于“控制台”文件夹中,否则为“基本”-位于“命令”文件夹中

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...