Plugins 在TYPO3中调用两次主函数

Plugins 在TYPO3中调用两次主函数,plugins,typo3,frontend,Plugins,Typo3,Frontend,我已经使用kickstarter创建了一个TYPO3插件。我有pi1文件夹,其中包含class\u pi1.phpclass。我的问题是,每当我加载这个类时,它的主要函数都会执行两次。这种情况下可能会出现什么问题?请确保已嵌入此元素一次。。如果ext是由kickstarter创建的,那么打字脚本必须是ok。如果plugin.tx_myext_pi1是一种类型的用户,则如果嵌入一次,它将始终呈现一次 “每当我加载这个类”-你所说的“加载”一个类是什么意思?你用它做什么?解决了这个问题 t3lib_

我已经使用kickstarter创建了一个TYPO3插件。我有
pi1
文件夹,其中包含
class\u pi1.php
class。我的问题是,每当我加载这个类时,它的主要函数都会执行两次。这种情况下可能会出现什么问题?

请确保已嵌入此元素一次。。如果ext是由kickstarter创建的,那么打字脚本必须是ok。如果plugin.tx_myext_pi1是一种类型的用户,则如果嵌入一次,它将始终呈现一次


“每当我加载这个类”-你所说的“加载”一个类是什么意思?你用它做什么?

解决了这个问题 t3lib_extMgm::addPItoST43($_EXTKEY,'pi1/class.tx_besijobs_pi1.php','u pi1','list_type',1)

必须将“1”更改为“0”


t3lib_extMgm::addPItoST43($_EXTKEY,'pi1/class.tx_besijobs_pi1.php','u pi1','list_type',0)

我用另一种方法解决了它

我使用的方法是$this->cObj->converttoUserInToObject();看起来当它被使用时,插件会被第二次执行

所以,我不是让他做他想做的,而是在方法完成后阻止他

$this->cObj->convertToUserIntObject();

if ($this->cObj->doConvertToUserIntObject) {
     return;
}

该模块仍在第二次执行,但至少我没有对数据库执行任何请求。

请查看typoscript对象浏览器中的扩展配置值。我已检查,但未发现任何错误。您的插件如何包含在页面中?是否有可能有多个内容元素包含您的插件?一个内容元素只包含一次插件。我使用了一个模板,其中最上面的元素在兄弟中重用。因此,在最上面的页面添加插件就足够了。您将插件从缓存的用户对象(“1”)更改为未缓存的用户INT(“0”)对象。这不是一个好的解决方案,即使它隐藏了你的问题。。因为@maholtz写了正确的评论。对于这个问题,这是一个肮脏的解决方案。