我正在弄清楚Prestashop 1.7是如何运作的,而且我对Symfony有一些经验。
在Symfony开发模式[Symfony project url]/_profiler
中,检查请求中的dump($someVariable)
变量非常有用。
使用管理员模式中的Prestashop 1.7,可以[Prestashop project url]/admin[some random chain of chars]/_profiler
显示Symfony _profiler
并分析有关管理模式的请求中发生的情况。< / p>
但如果在管理模式之外(在虚拟商店演示模式中),[Prestashop project url]/_profiler
或[Prestashop project url]/[language value]/_profiler
不会显示Symfony _profiler
< /强>
我通过激活define('_PS_DEBUG_PROFILING_', true);
中的[prestashop project]/config/defines.inc.php
尝试了Prestashop自己的探查器。它在“虚拟商店演示模式”的底部显示Prestashop探查器,但是这个不包括dump($someVariable)
,可用于开发和理解Prestashop行为,hookAction[action name]
。
我设法通过生成的HTML生成了dump($someVariable)
hookDisplay[display name]
,而不是hookAction[action name]
,这是我正在寻找的。
更新
看看Prestashop 1.7代码,我几乎感觉到Symfony只在Admin端使用,因为我可以看到:
$kernel = new AppKernel(_PS_MODE_DEV_?'dev':'prod', _PS_MODE_DEV_);
中的[Prestashop project url]/admin[some random chain of chars]/index.php
,但我在[Prestashop project url]/index.php
中没有看到。
答案 0 :(得分:0)
我到目前为止找到的最佳解决方案是创建一个类似于explained here的自定义记录器
我已创建文件:[Prestashop project]/modules/[my module]/classes/CustomLogger.php
<?php
class CustomLogger {
const DEFAULT_LOG_FILE ="prestashop_system.log";
public static function log($message, $level = 'debug', $fileName = null){
$fileDir = _PS_ROOT_DIR_ . '/log/';
$fileName=self::DEFAULT_LOG_FILE;
if(is_array($message) || is_object($message)){$message = print_r($message, true);}
$formatted_message=$level." -- ".date('Y/m/d - H:i:s').": ".$message."\r\n";
return file_put_contents($fileDir . $fileName, $formatted_message, FILE_APPEND);
}
}
?>
在&#39; [Prestashop项目] / modules / [我的模块] / [我的模块] .php&#39;它被声明在顶部:
include_once dirname(__FILE__).'/classes/CustomLogger.php';
在代码中使用CustomLogger::log($[some variable]);
。