【发布时间】:2015-07-10 02:45:59
【问题描述】:
我正在扩展成员表以包含基本地址详细信息。
设置:
class ClientMember extends Member {
private static $db = array(
"AddressLine1" => "Varchar(255)",
"AddressLine2" => "Varchar(255)",
"Country" => "Varchar(50)",
"State" => "Varchar(50)",
"Postcode" => "Int(4)"
);
public function getCMSFields() {
$fields = parent::getCMSFields();
$addressLine1 = new TextField('AddressLine1', 'Address line 1', null, 255);
$addressLine2 = new TextField('AddressLine2', 'Address line 2', null, 255);
$country = new CountryDropdownField('Country', 'Country', null, 'AU');
$state = new DropdownField('State', 'State', array('vic' => 'Victoria', 'sa' => 'South Australia', 'wa' => 'Western Australia'));
$postcode = new NumericField('Postcode', 'Postcode', null, 4);
$fields->addFieldsToTab(
'Root.Address',
array(
$addressLine1,
$addressLine2,
$country,
$state,
$postcode
)
);
return $fields;
}
}
然后我告诉 SilverStripe 在 YAML 配置中使用 ClientMember 的新类名。
Injector:
Member:
class: ClientMember
问题:
然后我可以通过 CMS 创建新的“客户成员”,新的“地址”选项卡和字段都按预期工作。保存时出现以下错误:
string '无法运行查询:UPDATE "Member" SET "AddressLine1" = “测试”,“AddressLine2”=“测试”,“国家”=“澳大利亚”,“州”=“维克”, "邮政编码" = 1212, "LastEdited" = '2015-07-10 12:43:58' 其中 "ID" = 10
“字段列表”中的未知列“AddressLine1”(长度=245)
注意它正在尝试将新字段写入Member 表,而不是扩展的ClientMember 表。
我错过了什么?
【问题讨论】:
-
您能否澄清一下您是想完全用 ClientMember 替换 Member,还是想要同时拥有 ClientMember 和 Member?
-
我正在尝试替换(扩展)成员。在理想情况下,它们应该是分开的,但我想重用 Member 附带的所有登录功能。
标签: silverstripe