猿问

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

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

htdocs/project/frontend/controllers/MyController.php

我要调用的方法是

actionTest_method()

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

php yii my/test_method

我试过

php yii frontend/controllers/my/test_method

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


慕沐林林
浏览 124回答 3
3回答

三国纷争

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

www说

首先。您不需要从控制台调用前端控制器。如果你想这么做的话。您可以使用带有以下 URL 模式的curl 命令来执行此操作。Yii2 URL 路由curl GET 'example.com/my/action-name'但是,根据 Yii2 指南,您可以使用控制台命令从控制台运行脚本。所以你的控制器应该位于命令目录中。这是helloController.phpYii2 基本应用程序模板的。<?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扩展的类。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在根目录中。

慕勒3428872

您的控制台控制器必须位于 htdocs/project/console/controllers/ 中,还要检查您的控制台配置中的controllerNamespace
随时随地看视频慕课网APP
我要回答