TYPO3:何时/如何使用define('TYPO3_MODE','FE');

问题描述 投票:0回答:3

/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');

php typo3
3个回答
1
投票

应该不需要定义这个常量。 TYPO3 会为你做的。

要么构建一个可以放在网站上的插件,要么构建一个不需要网站即可运行的

eID
。 两者都会为您提供 TYPO3 环境;插件是一个完整的插件,eID 是一个更小(更快)的插件。


1
投票

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

许多扩展询问 TYPO3_MODE 的状态。

if (!defined ('TYPO3_MODE'))    die ('Access denied.');

1
投票

更新:TYPO3_MODE 在 v11 中已弃用,并在 v12 中删除。


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

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

如果执行此操作,TYPO3_MODE 将已初始化。在常量部分阅读有关 TYPO3_MODE 的更多信息。请注意,大多数 TYPO3 常量已被弃用,并已被 Environment 类取代。

了解有关如何创建扩展的更多信息:

使用最新的 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。

您在上面尝试执行的操作可能甚至不需要延期。

© www.soinside.com 2019 - 2024. All rights reserved.