如何在TYPO3中调试if<;f:调试>;返回字符串而不是对象?
在自定义Type3 8.7.12 extbase扩展中,我无法调试模板中的如何在TYPO3中调试if<;f:调试>;返回字符串而不是对象?,typo3,fluid,extbase,typo3-8.7.x,Typo3,Fluid,Extbase,Typo3 8.7.x,在自定义Type3 8.7.12 extbase扩展中,我无法调试模板中的f:debug项 我们在listAction控制器中,只需执行以下操作: $institutions = $this->institutionRepository->findAll(); $this->view->assignMultiple([ 'institutions' => $institutions, // ... pagination
f:debug
项
我们在listAction控制器中,只需执行以下操作:
$institutions = $this->institutionRepository->findAll();
$this->view->assignMultiple([
'institutions' => $institutions,
// ... pagination limit ...
]
);
在模板中:
<f:debug>
{institutions}
</f:debug>
我获取对象的第一个属性,例如名称
编辑:这是由于模型中的\uuu toString()
魔术方法造成的。如果删除它,则会得到名称空间和uidSTUBR\Extension\Domain\Model\Institution:55
——这看起来又像是没有渲染对象
等待…php.net说当类被当作字符串对待时,\uuu toString()方法允许类决定它将如何反应。那么,是否有什么东西可以将对象作为字符串来处理(类型转换?)
使用属性是正常的,当尝试打印整个对象时,问题才会出现
我应该去哪里看?延迟加载?有一些延迟加载属性,但没有那么多。或者是课堂上少了什么?还是有解决办法
附言:
- 无法打印\r或var\u转储查询结果,出现内存限制错误
- 我看到了,但是构造函数中已经调用了
initStorageObjects()
以下方法与
的工作原理相同,在我的情况下工作原理相似:
\TYPO3\CMS\Core\Utility\DebugUtility::debug(
$var = $variable,
$header = 'Institutions',
$group = ''
);
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump(
$variable,
$title = 'Institutions',
$maxDepth = 8,
$plainText = FALSE,
$ansiColors = TRUE,
$return = FALSE,
$blacklistedClassNames = NULL,
$blacklistedPropertyNames = NULL
);
在列表中执行或在控制器中显示操作
它不如使用f:debug方便(因为您必须在两个不同的位置执行工作,例如,当您在模板中处于循环中时,您必须转到控制器并再次构建该循环),但这是一个有用的解决方法
编辑:我发现这就足够了
{var}
在一行中,以下方法的作用与
相同,在我的情况下也同样有效:
\TYPO3\CMS\Core\Utility\DebugUtility::debug(
$var = $variable,
$header = 'Institutions',
$group = ''
);
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump(
$variable,
$title = 'Institutions',
$maxDepth = 8,
$plainText = FALSE,
$ansiColors = TRUE,
$return = FALSE,
$blacklistedClassNames = NULL,
$blacklistedPropertyNames = NULL
);
在列表中执行或在控制器中显示操作
它不如使用f:debug方便(因为您必须在两个不同的位置执行工作,例如,当您在模板中处于循环中时,您必须转到控制器并再次构建该循环),但这是一个有用的解决方法
编辑:我发现这就足够了
{var}
用一行回答问题
<f:debug>{institutions}</f:debug>
{institutions}
将被解析为对象,但其中的任何空格都将使其解析为字符串,因此。回答问题
<f:debug>{institutions}</f:debug>
{institutions}
将作为对象进行分析,但其中的任何空格都将使其作为字符串进行分析。Hmmm。。。我也有类似的“惊喜”您是否在控制器中尝试了debug()?(所以不是在流体中…)-您是否尝试过简单的$this->view->assign('institutions',$institutions)和debug$institutions您是否暂时尝试删除@lazy?请同时发布流体代码,谢谢您的反馈simple$this->view->assign('institutions',$institutions)
和remove@lazy
:我做了,没有区别您在控制器中尝试过debug()吗?
没有这样的php命令,您是什么意思?print\u r使用了太多的内存错误()是TYPo3的标准调试方法:谢谢Robert<代码>\TYPO3\CMS\Core\Utility\DebugUtility::debug
工作正常,并产生与f:debugh预期相同的输出如果您将其作为答案发布,我可以接受itHmmm。。。我也有类似的“惊喜”您是否在控制器中尝试了debug()?(所以不是在流体中…)-您是否尝试过简单的$this->view->assign('institutions',$institutions)和debug$institutions您是否暂时尝试删除@lazy?请同时发布流体代码,谢谢您的反馈simple$this->view->assign('institutions',$institutions)
和remove@lazy
:我做了,没有区别您在控制器中尝试过debug()吗?
没有这样的php命令,您是什么意思?print\u r使用了太多的内存错误()是TYPo3的标准调试方法:谢谢Robert\TYPO3\CMS\Core\Utility\DebugUtility::debug
工作完美,并产生与f:debugh预期相同的输出如果您将其作为答案发布,我可以接受它作为DebuggerUtility::var_dump
中的标题或DebugUtility::debug
此:\uu CLASS\uuuu.':'中的标题使用非常有用__行_
这样,您总是可以直接在哪个文件中找到使用调试的文件,而且您永远不需要搜索。另外,如果复制调试命令,您永远不需要调整它,因为它是自调整的。在DebuggerUtility::var_dump
中用作标题或在DebugUtility::debug
中用作标题非常有用:__行_
这样,您总是可以直接在哪个文件中找到使用调试的文件,而且您永远不需要搜索。而且,如果复制调试命令,您永远不需要调整它,因为它是自调整的。