我叫控制员
SiteMapController.php
采取行动
索引
在Yii2的控制台文件夹中
我可以从命令行运行它。
但是我需要从后端/ controllers文件夹的控制器中运行它。这意味着我应该从Yii2后端控制器操作中运行控制器SiteMapController.php的索引操作。这是我的测试代码,但不起作用。
后端/控制器/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"
但是运行索引没有帮助
我没有其他选择。
答案 0 :(得分:1)
使用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)
答案 1 :(得分:0)
如果您使用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(如果init
脚本是在安装程序上执行的)和yii2-app-basic项目模板的一部分。