是否可以向模块 Peronal 数据添加新的自定义可编辑字段?如果是这样,这是如何工作的?PHP 我的管理员并添加 Mysql 表?或者这可以通过 contao 后端完成吗?请指教
1 回答
它很有可能。我不确定您现在使用的是哪个 contao 版本,因为它们在您创建数据库字段的方式上有所不同。
假设您要在注册模块中添加接受条款复选框。
康淘2.11
在 modules 目录中创建一个具有以下结构的文件夹
myModule/config/database.sql
myModule/dca/tl_member.php
myModule/languages/en/tl_member.php
在database.sql中,创建字段如下
CREATE TABLE `tl_member` (
accept_terms
char(1) NOT NULL default '', ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
在 dca/tl_member.php 中,将字段添加到 tl_member dca close to where login details 如下所示。
$GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace('login;','login,accept_terms;',$GLOBALS['TL_DCA']['tl_member']['palettes']['default']);
如下创建字段(用于生成复选框输入)
$GLOBALS['TL_DCA']['tl_member']['fields']['accept_terms'] = array(
'label' => &$GLOBALS['TL_LANG']['tl_member']['accept_terms'],
'inputType' => 'checkbox',
'eval' => array( 'mandatory' => true, 'tl_class' => 'w50', 'feEditable' => true,'feViewable'=>true)
);
注意: mandatory => true // 使其成为必填字段 feEditable => true // 在模块个人数据或模块注册中启用编辑 feViewable=>true // 使其出现在模块个人数据或模块注册中
在languages/en/tl_member.php 中,按如下方式创建标签
$GLOBALS['TL_LANG']['tl_member']['accept_terms'] = array('Terms & Conditions', 'I accept the terms and conditions of using this website.');
接触3
结构几乎相同,只是您不需要 database.sql 即您可以删除它并修改 dca/tl_member.php 如下
$GLOBALS['TL_DCA']['tl_member']['fields']['accept_terms'] = array(
'label' => &$GLOBALS['TL_LANG']['tl_member']['accept_terms'],
'inputType' => 'checkbox',
'eval' => array( 'mandatory' => true, 'tl_class' => 'w50', 'feEditable' => true,'feViewable'=>true),
'sql' => "char(1) NOT NULL default ''"
);
'sql' => "char(1) NOT NULL default ''"
请注意在数组中添加了这一行。
现在转到安装工具并在 mysql 中创建您的字段。登录到后端,转到模块,您的个人数据模块,您应该能够在那里看到您的字段。检查它以将其包含到前端字段中,您就完成了。
请不要在所有目录中使用 tl_member 和 accept_terms 的一致性