保存時の半角全角変換
出典: SugarForum.jp
ロジックフックを使えば、既存モジュールについても、保存時に数字をすべて半角にしたり、振り仮名をすべて「ひらがな」あるいは「カタカナ」に統一したりすることができます。
以下は、Contactsモジュールの例ですが、必要なモジュールそれぞれにロジックフックを設定します。(※カスタムロジックの呼出も参照)
例: Contactsモジュール
追加する必要があるのは、logic_hooks.php と、実際にコードが記述されたファイルの2つです。before_saveイベントをフックして、PHPのmb_convert_kana関数で全角・半角を調整します。
# SugarRoot/custom/modules/Contacts/logic_hooks.php
$hook_array = array (
'before_save' => array (
array (1, 'adjust_fields',
'custom/modules/Contacts/include/JapanesePack.php', //インクルードするファイル
'JapanesePackContactLogicFook ', //クラス名
'adjustJapaneseFields' //メソッド名
),
)
);
ロジックフックの定義は必ず、SugarRoot/custom/modules/@モジュール名/logic_hooks.php に書く必要があります。ただ、実際のコードの場所は、定義の内容と対応がとれていればどこでも構いません。(下記の例のように、「include」といった名前でサブディレクトリを作成して、その中に入れておくのが分かりやすいかもしれません)
# SugarRoot/custom/modules/Contacts/include/JapanesePack.php
class JapanesePackContactLogicFook {
/**
* 日本語の全角・半角などの調整
*/
function adjustJapaneseFields(&$bean, $event, $arguments) {
global $sugar_config;
if ($event == 'before_save') {
$bean->phone_home = mb_convert_kana($bean->phone_home, 'as');//英数字と空白を半角に
$bean->phone_other = mb_convert_kana($bean->phone_other, 'as');//英数字と空白を半角に
$bean->phone_fax = mb_convert_kana($bean->phone_fax, 'as');//英数字と空白を半角に
$bean->primary_address_street = mb_convert_kana($bean->primary_address_street, 'as');//英数字と空白を半角に
$bean->furigana_c = mb_convert_kana($bean->furigana_c, 'Hcs');//全角かなに変換し、姓と名の間の空白は半角に統一
}
}
}
※この例では、振り仮名(furigana_c)をカスタムフィールドとして追加しているものとします。