后端控制器中的 Yii2 Call Console controller/action
Yii2 Call Console controller/action in backend controller
我批评了控制器
SiteMapController.php
采取行动
index
在 Yii2 的控制台文件夹中
我可以从命令行 运行 它。
但是我需要 运行 它来自 backend/controllers 文件夹的控制器。这意味着我应该 运行 索引控制器的动作 SiteMapController.php 来自 Yii2 后端控制器动作。这是我的测试代码,但它不起作用。
Backend/controllers/BlogController.php
private function runSiteMapGenerate(){
$cr = new ConsoleRunner(['file' => '@console']);
$cr->run('site-map');
}
两个脚本我都试过了
"vova07/yii2-console-runner-extension": "*",
"tebazil/yii2-console-runner": "^0.0.0"
但是对运行索引没有帮助
我没有更多的选择。
使用 chdir
和 运行 找到 yii 目录下一个 shell_exec
。使用它可以使它变得简单,无需安装任何扩展。
chdir('../yiifolder'); //folder that contains yii
$output = shell_exec('php yii migrate');
var_dump($output);
这是在我的服务器上测试的。
输出:
string 'Yii Migration Tool (based on Yii v2.0.6)
No new migration found. Your system is up-to-date.
' (length=93)
如果您使用 vova07/yii2-console-runner-extension,您需要将 file 设置为通常位于根文件夹中的 yii
脚本的路径 - 您不需要' 在这里指定控制台目录。所以很有可能你是这样创建对象的:
// assuming you have file 'yii' in the root directory:
$cr = new ConsoleRunner(['file' => '@app/yii']);
那么实际调用应该有效:
// assuming that 'index' is the default action
$cr->run('site-map');
// or
$cr->run('site-map/index');
信息:如果应该执行控制台命令,您实际上会使用命令的一些参数调用 yii
。您不直接调用命令。 yii
启动控制台应用程序。看看这个文件。它是 yii2-app-advanced (present if the init
script was executed on setup) and yii2-app-basic 项目模板的一部分。
我批评了控制器
SiteMapController.php
采取行动
index
在 Yii2 的控制台文件夹中
我可以从命令行 运行 它。
但是我需要 运行 它来自 backend/controllers 文件夹的控制器。这意味着我应该 运行 索引控制器的动作 SiteMapController.php 来自 Yii2 后端控制器动作。这是我的测试代码,但它不起作用。
Backend/controllers/BlogController.php
private function runSiteMapGenerate(){
$cr = new ConsoleRunner(['file' => '@console']);
$cr->run('site-map');
}
两个脚本我都试过了
"vova07/yii2-console-runner-extension": "*",
"tebazil/yii2-console-runner": "^0.0.0"
但是对运行索引没有帮助
我没有更多的选择。
使用 chdir
和 运行 找到 yii 目录下一个 shell_exec
。使用它可以使它变得简单,无需安装任何扩展。
chdir('../yiifolder'); //folder that contains yii
$output = shell_exec('php yii migrate');
var_dump($output);
这是在我的服务器上测试的。
输出:
string 'Yii Migration Tool (based on Yii v2.0.6)
No new migration found. Your system is up-to-date.
' (length=93)
如果您使用 vova07/yii2-console-runner-extension,您需要将 file 设置为通常位于根文件夹中的 yii
脚本的路径 - 您不需要' 在这里指定控制台目录。所以很有可能你是这样创建对象的:
// assuming you have file 'yii' in the root directory:
$cr = new ConsoleRunner(['file' => '@app/yii']);
那么实际调用应该有效:
// assuming that 'index' is the default action
$cr->run('site-map');
// or
$cr->run('site-map/index');
信息:如果应该执行控制台命令,您实际上会使用命令的一些参数调用 yii
。您不直接调用命令。 yii
启动控制台应用程序。看看这个文件。它是 yii2-app-advanced (present if the init
script was executed on setup) and yii2-app-basic 项目模板的一部分。