モバイル: 2009年4月アーカイブ

モバイル開発@symfony :: handsOut.jp

symfonyでモバイルの開発をする際に、とても参考になるテクニック満載のスライドです。

この中でdocomo、au、SoftBankのキャリア別にinputタグの入力モードを切り替えるカスタムヘルパーが紹介されていますが、省略されている以降のソースも組んでみました。

mobInputTagHelper.php

<?php
 
function mob_input_tag($name, $value=null, $options = array())
{
  $carrier = sfContext::getInstance()->getRequest()->getAttribute('carrier');
 
  if(isset($options['input_style']) && $input_style = strtolower($options['input_style']))
  {
    unset($options['input_style']);
   
    switch (strtolower($input_style))
    {
      case 'kana':
        $options["mode"] = 'hiragana';
        if($carrier != 'docomo')
        {
          $options['istyle'] = '1';
          $options['format'] = '*M';
        }
        else
        {
          $options['style'] .= ';-wap-input-format:&quot;*&lt;ja:h&gt;&quot;;-wap-input-format:*M;';
        }
        break;
       
      case 'hankana':
        $options["mode"] = 'hankakukana';
        if($carrier != 'docomo')
        {
          $options['istyle'] = '2';
          $options['format'] = '*M';
        }
        else
        {
          $options['style'] .= ';-wap-input-format:&quot;*&lt;ja:hk&gt;&quot;;-wap-input-format:*M;';
        }
        break;
       
      case 'alpha':
        $options["mode"] = 'alphabet';
        if($carrier != 'docomo')
        {
          $options['istyle'] = '3';
          $options['format'] = '*m';
        }
        else
        {
          $options['style'] .= ';-wap-input-format:&quot;*&lt;ja:en&gt;&quot;;-wap-input-format:*m;';
        }
        break;
       
      case 'numeric':
        $options["mode"] = 'numeric';
        if($carrier != 'docomo')
        {
          $options['istyle'] = '4';
          $options['format'] = '*N';
        }
        else
        {
          $options['style'] .= ';-wap-input-format:&quot;*&lt;ja:n&gt;&quot;;-wap-input-format:*N;';
        }
        break;
    }
  }
 
  return input_tag($name, $value, $options);
}


 

作成したカスタムヘルパーは、オートロードされるlibディレクトリ内にhelperというディレクトリを作りその下に配置。

lib/helper/mobInputTagHelper.php

ヘルパーをテンプレートで使用するには、カスタムヘルパーを宣言してロードする必要があります。

<?php use_helper('mobInputTag') ?>

これでテンプレート内でヘルパー関数が使用できます。

// ひらがな
<?php echo mob_input_tag('name', '', array('input_style' => 'kana')) ?>
// 半角カナ
<?php echo mob_input_tag('name', '', array('input_style' => 'hankana')) ?>
// アルファベット
<?php echo mob_input_tag('name', '', array('input_style' => 'alpha')) ?>
// 数字
<?php echo mob_input_tag('name', '', array('input_style' => 'numeric')) ?>

 

注意点

上記ソースでのいくつか注意点です。

  • format属性には半角カナの指定方法がないため、'hankana'オプション指定時にはとりあえず「M」(全角文字)を指定するようになっています。
  • 入力モード以外のstyle属性指定にも対応させるよう、-wap-input-formatの前にセミコロンがデフォルトで入るようになってますが、他の指定がある時のみセミコロンを付けるようにしても良いかも。
  • このソースはFireMobileSimulatorで出力切り替えを確認したのみで、実機での動作は未確認です。

 

本来、各キャリアの仕様上では、

docomo

  • iモードHTMLはistyle属性、iモードXHTMLは-wap-input-formatをstyle属性

au

  • format属性

SoftBank

  • mode属性

ということになっているようなのですが、一部の機種依存問題などがあったりすることもあり、こういう冗長的な書き方がバッドノウハウとしてベターなようです。

この辺り、詳しくはスライド作者ゆどうふさんのブログの説明が参考になります。

携帯XHTMLでの入力モードのまとめと、ちょっとしたハマりどころについて - ゆどうふろぐ

 

また、携帯仕様の資料として以下の書籍も参考にさせて頂きました。

携帯サイト コーディング&デザイン
高木 悠介

4797348488
ソフトバンククリエイティブ 2008-12-26
売り上げランキング : 805
おすすめ平均 star

Amazonで詳しく見る
by G-Tools

このアーカイブについて

このページには、2009年4月以降に書かれたブログ記事のうちモバイルカテゴリに属しているものが含まれています。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

モバイル: 2009年4月: 月別アーカイブ

RSSフィード

  • 購読する

いろいろ

あわせて読みたい

フィードメーター - ポップフライ

seo

Powered by Movable Type 4.01