为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕沐林林 2023-09-22 16:50:14
我是 Yii2 Framework 的新手,我正在尝试调用位于下面前端文件夹中的控制器htdocs/project/frontend/controllers/MyController.php我要调用的方法是actionTest_method()在终端(在项目根目录中)中,我正在编写php yii my/test_method我试过php yii frontend/controllers/my/test_method但没有工作错误,我收到 InvalidRouteException
查看完整描述

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

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



查看完整回答
反对 回复 2023-09-22
?
www说

TA贡献1775条经验 获得超8个赞

首先。您不需要从控制台调用前端控制器。如果你想这么做的话。您可以使用带有以下 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

在根目录中。


查看完整回答
反对 回复 2023-09-22
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

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



查看完整回答
反对 回复 2023-09-22
  • 3 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信