Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在TYPO3中调试if<;f:调试>;返回字符串而不是对象?_Typo3_Fluid_Extbase_Typo3 8.7.x - Fatal编程技术网

如何在TYPO3中调试if<;f:调试>;返回字符串而不是对象?

如何在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

在自定义Type3 8.7.12 extbase扩展中,我无法调试模板中的
f:debug

我们在listAction控制器中,只需执行以下操作:

    $institutions = $this->institutionRepository->findAll();
    $this->view->assignMultiple([
        'institutions' => $institutions,
        // ... pagination limit ...
        ]
    );
在模板中:

 <f:debug>
    {institutions}                            
 </f:debug>
我获取对象的第一个属性,例如名称

编辑:这是由于模型中的
\uuu toString()
魔术方法造成的。如果删除它,则会得到名称空间和uid
STUBR\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
中用作标题非常有用:
__行_
这样,您总是可以直接在哪个文件中找到使用调试的文件,而且您永远不需要搜索。而且,如果复制调试命令,您永远不需要调整它,因为它是自调整的。