0

/public_html/demo是我的 TYPO3 网站,我test.php在它下面放了一个文件,

<?php
//define('TYPO3_MODE','FE');

require('typo3conf/localconf.php');
require('t3lib/class.t3lib_db.php');
require('t3lib/class.t3lib_div.php');

define('TYPO3_db_host', $typo_db_host);
define('TYPO3_db_username', $typo_db_username);
define('TYPO3_db_password', $typo_db_password);
define('TYPO3_db', $typo_db);


$DB = new t3lib_DB();
$DB->connectDB();
$result = mysql_query("SELECT * FROM fe_users WHERE username='tom_seeker'");
while($row = mysql_fetch_array($result))
{
    echo $row['email'];
}

?>

问题:

什么时候需要放这条线:define('TYPO3_MODE','FE');?在这里我将其注释掉,脚本仍然有效,所以我只是想知道何时/如何使用define('TYPO3_MODE','FE');

4

3 回答 3

1

通常你定义 TYPO3_MODE 来告诉系统你是在前端还是后端(FE vs BE)。

许多扩展询问 TYPO3_MODE 的状态。

if (!defined ('TYPO3_MODE'))    die ('Access denied.');
于 2013-09-03T13:35:05.617 回答
1

应该不需要定义这个常量。TYPO3 将为您完成。

构建一个可以放在您的站点上的插件,或者一个eID不需要站点即可运行的插件。两者都会给你 TYPO3 环境;插件是完整的,eID 是更小(更快)的。

于 2013-09-03T13:38:09.403 回答
0

这个问题已经很老了,但人们可能仍然会在这里阅读以寻找答案(就像我一样)。


您的(独立)脚本未在任何 TYPO3 上下文中运行。

(通常的)方法是使用现有的 TYPO3 API创建扩展。TYPO3 会为你做一些你不必自己做的初始化,例如自动加载类、初始化后端和前端用户、语言处理、URL 解析等。

如果你这样做,TYPO3_MODE 将已经被初始化。在常量部分阅读更多关于TYPO3_MODE 的信息。请注意,大多数 TYPO3 常量已被弃用,并已被 E​​nvironment取代。

阅读有关如何创建扩展的更多信息:

使用最新的 TYPO3 10 版本,您可能会这样做:

  1. 决定是从头开始创建扩展(在目录typo3conf/ext/extensinoname 中)还是使用extension_builder(extension_builder 为您生成扩展代码。这是基于Extbase 框架和Fluid 模板引擎。在许多情况下,这可能矫枉过正。)
  2. 如果从头开始创建,则必须创建最少需要的文件 ext_emconf.php 和 composer.json
  3. 从那里继续(取决于你想要做什么)。对于上面的用例,您很可能想要创建一个插件。你会想要获取数据库记录(使用基于 Doctrine dbal 或 Extbase 持久性的 QueryBuilder)或使用来自 TYPO3 核心的现有 FrontendUserRepository

您在上面尝试做的事情甚至可能不需要扩展。

于 2019-12-12T08:27:22.470 回答