编辑:
因为我将最初的赏金授予300
@arcain 太晚了,所以我要重新开放。并将额外的奖励授予150
@arcain。当然,除非有人提供更好的答案。:)
/ 编辑
考虑以下形式:
language | region | active | default |
-----------------------------------------------
en | GB | [x] | (*) | [X delete]
nl | NL | [x] | ( ) | [X delete]
nl | BE | [x] | ( ) | [X delete]
[x] let visitors browser-settings determine the default language
[save]
上表的设置将保存在一个数据库表中,其中列映射到上述列(显然不包括最后一列)。
所有(保存和删除)操作都直接发送到本地化控制器。本地化控制器基本上调用 LocalizationService 上的方法,如下所示:
$localizationService->updateCollection( $_POST ) // update collection settings
// or
$localizationService->delete( $_POST ) // delete a single locale
LocalizationService 又调用 LocaleMapperDb,如下所示:
foreach( $localeCollection as $locale )
{
$localeMapperDb->update( LocaleModel $locale );
}
// or
$localeMapperDb->delete( LocaleModel $locale );
但是,保存此设置的责任是:
[x] let visitors browser-settings determine default language
它将保存在名为 site_settings 的数据库表中。我想到了几个选择:
- 在 LocalizationController 中使用 SiteService / SiteSettingsService。但是,完整的表单已经在 LocalizationService 中生成和处理。
- 在 LocalizationService 中使用 SiteMapperDb / SiteSettingsMapperDb 并在 updateCollection( $_POST ) 中使用它
- 在 LocaleMapperDb 中使用 SiteMapperDb / SiteSettingsMapperDb
第一个和最后一个选项看起来是最糟糕的选项,但我不确定。你觉得最好的选择是什么?或者,也许您有其他选择,我没有想到?