gpt4 book ai didi

php - Yii2:从供应商目录中的 Controller 运行控制台命令

转载 作者:搜寻专家 更新时间:2023-10-31 21:00:13 25 4
gpt4 key购买 nike

我正在重构我们的大型工作应用程序。这涉及将我构建的一些工具(例如命令行的模式/种子迁移工具)分离到它们自己的存储库中,以供多个应用程序使用。

如果它在控制台/ Controller 中,它会被拾取。如果我将它们移动到他们自己的存储库并通过 Composer 需要它,当我说 php yii db/up 时,我如何让 Yii 知道,我的意思是转到 new\vendor\namespace\DbController@actionup ?

最佳答案

如果您创建一个扩展(当然是通过 composer 加载它),您可以在里面找到 Module.php,它将保存到控制台 Controller 的路径(您可以用您的终端调用)。

我将为 common\modules\commander 命名空间编写我的示例,对于供应商扩展,您的命名空间将有所不同,但它以相同的方式适用于所有这些命名空间。所以我的扩展名有以下文件结构

<app>
common
modules
commander
controllers
• TestController.php
• Module.php

我的模块类如下所示:

namespace common\modules\commander;
use yii\base\Module as BaseModule;
class Module extends BaseModule
{
public $controllerNamespace = 'common\modules\commander\controllers';

public function init()
{
parent::init();
}
}

TestController.php是继承自yii\console\Controller:

namespace common\modules\commander\controllers;
use yii\console\Controller;
class TestController extends Controller
{
public function actionIndex()
{
echo 123;
}
}

让一切正常运行的主要部分是在 console/config/main.php 设置中注册 Module.php

'modules' => [
'commander' => [
'class' => \common\modules\commander\Module::className(),
],
...
],

就是这样,现在你可以像这样使用你的命令了:

yii commander/test/index

它会打印出 123,表明一切正常并且控制台 Controller 位于不同的文件夹中!

关于php - Yii2:从供应商目录中的 Controller 运行控制台命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44706899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com