0

我知道我可以将一个名为 ext_autoload.php 的文件放在我的typo3 4.7 扩展的根目录中。这将加载 ext_autoload.php 文件中提到的所有类。

但是,当我将 ext_autoload.php 文件放在后端模块的子目录中时,说myext/mod1 这个文件 ext_autoload.php 似乎被忽略了。

当我通过单击左侧框架中的后端模块来调用它时,myext/mod1/index.php会调用它,但是也找不到更高级别的 myext/ext_autoload.php 中提到的类。

因此,似乎只有扩展根目录中的 php 文件才能从自动加载机制中受益。 这是正确的行为吗?

我在错误日志中有这些条目。(假设没有任何类名拼写错误,当然......)

PHP Fatal error:  Class 'tx_myext_module1' not found in /var/www/typo3-4.7.8/typo3_src-4.7.8/t3lib/class.t3lib_div.php on line 4855, referer: http://.../cms/typo3/backend.php

我认为递归扫描扩展的子目录并在许多位置查找自动加载文件效率低下,但是我仍然没有找到有关自动加载机制的更多信息。

这是文件的样子:

return array(
    'tx_icdpdb_module1' => t3lib_extMgm::extPath('icdp_db', 'mod1/class.tx_icdpdb_module1.php')
);

?>

但是 ext/myextkey/index.php 从中受益, ext/myextkey/mod1/index.php 没有。

include()我已经通过对包含我需要的类的文件进行了古老的处理来解决了这个问题。

4

1 回答 1

1

如果您提供文件的“完整”路径(如文档中所述),则此工作:

<?php
$extensionPath = t3lib_extMgm::extPath('scheduler');
return array(
    'tx_scheduler_croncmd' => $extensionPath . 'class.tx_scheduler_croncmd.php',
    'tx_scheduler_croncmd_normalize' => $extensionPath . 'Normalize/class.tx_scheduler_croncmd_normalize.php',
);
?>

当你使用t3lib_extMgm::extPath()ort3lib_extMgm::extRelPath()时,一切都应该没问题。

于 2013-07-29T15:44:53.217 回答