保存時の半角全角変換

出典: 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)をカスタムフィールドとして追加しているものとします。


最終更新 07:35, 2008年12月9日 (火)。   このページは 3,724 回アクセスされました。