這個問題在這里已經有了答案: 如何在 Symfony 3.4 中從控制器呼叫命令? (1 個回答) Symfony 行程 - 從服務執行命令 1 個答案 從一個命令中運行多個 Symfony 控制臺命令 2 個答案 昨天關門。
我正在嘗試從多個背景關系(前端、后端等)運行DataHandler命令。根據我的閱讀和嘗試,這必須在Synfony 命令中完成才能正常作業。只有這樣,在命令中,這樣的代碼片段才能運行:
Bootstrap::initializeBackendAuthentication();
$data = [...]
$dataHandler = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\DataHandling\DataHandler::class);
$dataHandler->start($data, []);
$dataHandler->process_datamap();
運行這些 DataHandler 命令的是_cli_后端用戶。
我根據檔案創建了我的 Synfony 命令。它已注冊,我可以這樣稱呼它,它按預期作業:
$ vendor/bin/typo3 myext:rundatahandler
我的問題是:如何在 PHP 類中運行它?我在檔案或在線都找不到它。我只為 Synfony 控制器類找到它,它們的行為不同,并且具有與 TYPO3 不同的輸入和屬性。
提前非常感謝!
uj5u.com熱心網友回復:
您可以使用The Process Component在您的類中運行命令。
安裝
composer require symfony/process
在您的 PHP 類中使用
use Symfony\Component\Process\Exception\ProcessFailedException;
use Symfony\Component\Process\Process;
class YouClass{
public function someAction(){
$process = new Process(['vendor/bin/typo3', 'myext:rundatahandler']);
// set the working directory to the root of the project
$process->setWorkingDirectory(getcwd() . "/../");
$process->run();
}
}
注意:另外,如果你的類沒有訪問 vendor 檔案夾的權限,那么你必須需要 vendor/autoload.php
require 'vendor/autoload.php';
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/456394.html
