我创建了一个命令控制器并将其注册在我的调度程序上,如:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['extbase']['commandControllers'][] =
'Blog\\Events\\Command\\UpdateCommandController';
我可以用调度程序执行我的命令;但是,如果我在var_dump
中输入die
或UpdateCommandController
,我将看不到TYPO3后端的任何变化。
如何调试我的命令控制器。而且,这样做的正确方法是什么?
有人可以给我一个提示吗?
这是命令控制器,我将调试:
namespace Blog\Events\Command;
use TYPO3\CMS\Extbase\Mvc\Controller\CommandController;
class UpdateCommandController extends CommandController
{
/**
* Eventsrepository
*
* @var \Blog\Events\Domain\Repository\EventsRepository
* @inject
*/
protected $eventsRepository;
public function updateCommand()
{
echo "hello world";
}
}
答案 0 :(得分:2)
您可以通过从命令行调用控制器来调试控制器。为此,您需要一个后端用户_cli_lowlevel
(没有权限)。
然后你可以使用php执行脚本typo3/cli_dispatch.phpsh
。要执行命令控制器,您需要执行类似于以下的命令:
php typo3/cli_dispatch.phpsh extbase <controller-name>:<action-name>
在您的情况下,<controller-name>
和<action-name>
都是update
。要查看CommandControllers中的所有可用操作,请执行以下命令:
php typo3/cli_dispatch.phpsh extbase help
答案 1 :(得分:0)
您可以使用Typo3扩展名Developer Log进行调试。 扩展在数据库中创建日志记录并在后端模块中显示它们。
在Extbase PHP代码中使用的示例:
$arguments = 'any-data-for-log';
\TYPO3\CMS\Core\Utility\GeneralUtility::devlog(
'[ClassName::functionName]',
'extension_name',
1, // severity
array('arguments' => $arguments) // log data
);
这是一种更好的方式(对我而言)。
答案 2 :(得分:0)
在TYPO3 9及更高版本中,您可以这样记录:
$this->logger = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Log\LogManager::class)->getLogger(__CLASS__);
$logWriter = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Core\Log\Writer\FileWriter', ['logFile' => 'typo3temp/logs/my_import.log']);
$this->logger->addWriter(\TYPO3\CMS\Core\Log\LogLevel::INFO, $logWriter);
然后
$this->logger->error($e->getMessage());