如何调试命令控制器?

时间:2015-07-19 12:50:35

标签: typo3 extbase

我创建了一个命令控制器并将其注册在我的调度程序上,如:

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['extbase']['commandControllers'][] =
        'Blog\\Events\\Command\\UpdateCommandController';

我可以用调度程序执行我的命令;但是,如果我在var_dump中输入dieUpdateCommandController,我将看不到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";
    }
}

3 个答案:

答案 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());