Контроллер консоли Yii2 / действие в бэкэнд-контроллере - PullRequest
0 голосов
/ 25 октября 2018

Я набрал контроллер

SiteMapController.php

с действием

index

в консолипапка Yii2
enter image description here
, и я могу запустить его из командной строки.
enter image description here
Но мне нужно запустить его из контроллерапапка 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"

Но это не помогает запустить индекс

У меня естьбольше нет вариантов.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Если вы используете 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 шаблонов проектов.

0 голосов
/ 25 октября 2018

Найдите каталог yii с помощью chdir и запустите следующий 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)
...