我有一个我构建的Magento模块,允许您通过管理界面将字符串保存到Magento的核心配置表中。我有一个观察者设置,当字符串保存在后端时运行一个方法。我在试图拦截字符串并对其进行编码,然后将其保存到数据库中。
所以当我的事件被触发时,它会运行:
public function myModSaved($observer)
{
echo "<h1> WOWSERS IT ACTUALLY WORKED!!</h1>";
$data = $observer->getData();
print_r($data);
}
输出如下:
Array ( [event] => Varien_Event Object ( [_observers:protected] => Varien_Event_Observer_Collection Object ( [_observers:protected] => Array ( ) ) [_data:protected] => Array ( [website] => [store] => [name] => admin_system_config_changed_section_mymodule_section ) [_hasDataChanges:protected] => [_origData:protected] => [_idFieldName:protected] => [_isDeleted:protected] => [_oldFieldsMap:protected] => Array ( ) [_syncFieldsMap:protected] => Array ( ) ) [website] => [store] => )
现在只有一个字符串写入数据库,如何在保存之前获取该字符串,然后将新修改的字符串添加到对象中,以便将其保存在数据库中?
提前致谢!
答案 0 :(得分:2)
在定义了配置字段的system.xml
文件中添加此声明:
<backend_model>adminhtml/system_config_backend_encrypted</backend_model>
这将在数据库访问之前和之后处理所有编码/解码。另外,为了获得“密码”类型字段,通常使用它:
<frontend_type>obscure</frontend_type>