是否可以向模块Peronal数据添加新的自定义可编辑字段?如果是这样,这是如何工作的? PHP我的管理员并添加Mysql表?或者这可以通过contao后端完成吗?请指教
答案 0 :(得分:4)
非常有可能。我不确定您现在使用的是哪个版本,因为它们在创建数据库字段方面有所不同。
让我们假设您要在注册模块中添加接受条件复选框。
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,接近登录详细信息的位置,如下所示。
$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)
);
注意: 强制=> 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.');
Contao 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的一致性