CakePHPのselectボックスのemptyオプションでvalueを指定する方法

CakePHP2.xのformにて、selectボックスのemptyオプションでvalueを指定したい場合どうすれば良いのか、メモ代わりに記述しておきます。

※公式のCakebook 2.xには記述が見当たらなかった(私の探し方が下手なだけの可能性もあり)ので。

■Cakebook2.xに掲載されている内容(を参考に私が書いたもの)

echo $this->Form->select('field', array(1 => 'Internet Explorer', 2 => 'Google Chrome', 3 => 'Firefox'), array('label'=>false, 'empty'=>'ウェブブラウザ'));

上記の様に記述した場合、出力されるHTMLは以下の様になります。

<select name="data[Xxx][field]" id="XxxField">
<option value="">ウェブブラウザ</option>
<option value="1">Internet Explorer</option>
<option value="2">Google Chrome</option>
<option value="3">Firefox</option>
</select>

これだと、ウェブブラウザの項目のvalueは空っぽです。

emptyオプションの指定を

'empty'=>'ウェブブラウザ'

と行うと、valueの値は空っぽになります。

例えばvalueの値を「0」にしたい場合は、以下の様にすれば良いようです。

■selectボックスのemptyオプションでvalueを指定する方法

echo $this->Form->select('field', array(1 => 'Internet Explorer', 2 => 'Google Chrome', 3 => 'Firefox'), array('label'=>false, 'empty'=>array(0 =>'ウェブブラウザ')));

上記の様に記述した場合、出力されるHTMLは以下の様になります。

<select name="data[Xxx][field]" id="XxxField">
<option value="0">ウェブブラウザ</option>
<option value="1">Internet Explorer</option>
<option value="2">Google Chrome</option>
<option value="3">Firefox</option>
</select>

ウェブブラウザの項目のvalueに「0」がセットされました。

emptyオプションの指定を

'empty'=>array(0 =>'ウェブブラウザ')

というように、連想配列で渡せば良いようです。

[参考]ここに、フォーム(select、checkbox、radioのオプションに関する記述あり。ただし、「valueが空っぽになる」方の記述法しか掲載されていないようです。)
Cakebook 2.x -> FormHelper -> Options for select, checkbox and radio inputs

browserconfig.xmlの作成方法

エラーログにbrowserconfig.xmlが見つからないというログがちょこちょこで出るようになってきたので、調べてみました。

■browserconfig.xmlとは?
Windows8で機能するIE11のライブタイルにて、ユーザーがサイトをピン留めするとIE11によって自動的に読み取られるファイル。

[参考]MSDN(Microsoft Developer Network)内の関連情報ページ
ライブ タイルの作成
IE11での Web サイト用カスタム タイルの作成

どうやら、ユーザがサイトをピン留めした時の表示内容や挙動を設定しておくファイルといった感じのものの様です。

■browserconfig.xmlを作成する
一番簡単なのは、以下のサイトを利用して作成する方法です。
BuildMyPinnedSite.com

[参考]
IE9の「ピン留め」対応方法紹介サイト、日本語を含む各国語版を公開(INTERNET Watch)

BuildMyPinnedSite.comは、マイクロソフトが提供しているbrowserconfig.xmlの作成が簡単に出来るサイト。
サイトで案内されている3つの手順を順に行っていくだけで、browserconfig.xmlを作成することができます。

(1)Webサイトのタイルを作成する
browserconfig.xml作成手順1
「タイトル(タイルに表示する文字列)」「(タイルの)背景色」「アップロード(タイルに表示する画像)」の3つを入力します。

・タイトル(タイルに表示する文字列)
 サイト名で良いかと思います。

・(タイルの)背景色
 ライブタイルの背景色を指定します。入力欄に直接カラーコードを入力しても良いですし、の右にあるスポイトマークをクリックして色を選択しても良いです。

・アップロード(タイルに表示する画像)
 タイルに表示する画像をアップロードできます。アップロードできるのは、png、gif、jpgの3種類のファイルです。

画像をアップロードすると、画像の下に4つのサイズ「128×128」「270×270」「270×558」「558×558」が表示されます。それぞれをクリックし、上の画像部分をドラッグして画像の表示範囲を指定するとサイズの所にチェックマークがつくので、それを全サイズに対して行います。

実際にどんな感じに見えるのかは、ページ右側の「ライブプレビュー」部分に表示されるので、それを見ながら作業すると良いです。

ちなみに、270×558が横長画像となる為、アップロードする画像は余白が大きい画像か横長の画像が良いです。そうでないと、表示したい部分が入らない、上下が切れた画像しか作れませんので・・・。

(2)プッシュ通知を追加する
browserconfig.xml作成手順2
ライブタイルのプッシュ通知で届けたい情報を指定できます。
ここでは、RSSフィードのURLを入力することが可能です。

(3)コードを入手
browserconfig.xml作成手順3
(1)~(2)で指定した情報を反映させたコードが自動生成されます。

・表示されたMETAタグをHTMLに追加する方法
・「パッケージをダウンロード」からbrowserconfig.xmlと各種画像ファイルをダウンロードする方法

の2種類がありますが、HTMLを書き換えるのは面倒なので、パッケージをダウンロードするのが良いかと思います。
ダウンロードしたZIPファイルを解凍すると

・browserconfig.xml
・large.png
・square.png
・tiny.png
・wide.png
・README.txt

というファイルがあります。
browserconfig.xmlをルートディレクトリにアップロードし、同じディレクトリに4つの画像ファイルもアップロードします。

例)ウェブアラカルトの場合
http://alc.netgamebm.com/browserconfig.xml
にbrowserconfig.xmlをアップロードしました。

もし、4つの画像を別のディレクトリにアップロードしたいという場合は、browserconfig.xmlの中の各画像ファイルへのパスを書き換えればOKです。

以上で完了です。

試しにWindows8.1のスタート画面にウェブアラカルトをピン留めしてみてみると、以下の様になりました。
browserconfig.xml作成手順4
ブログの最新記事数件のタイトルが、ローテーションでくるくると表示されていました。

XPからOSを切り替える人も多いでしょうし、そんなに作るのに手間のかかる物ではないので、browserconfig.xmlを作っておいてもよいのではないでしょうか。

Windows8.1で、IEの「サイトをアプリビューに追加」で追加したサイトをアプリ一覧から消す方法

Windows8.1で、IEの「サイトをアプリビューに追加」で追加したサイトを、アプリの一覧から消す方法。
(検索しても見当たらなかった、というより何と検索していいかよく分からなかったのでメモ代わりに。)

例)ヤフージャパンのサイトをアプリビューに追加したけど、やっぱり消したい場合。

手順1)
スタート画面の下にある下向き矢印(赤枠)をクリックして、アプリ一覧画面を表示する。
スタート画面

手順2)
アプリ一覧の中に、以前追加した「ヤフージャパンのサイトのアプリ」がある(赤枠)ので、それを右クリックする。すると、画面下にメニューが出てくるので、「ファイルの場所を開く」(黄色枠)をクリックする。
アプリ一覧

手順3)
フォルダのウィンドウが表示されるので、該当するサイトへのピン留めサイトショートカットファイル(この例では赤枠)を削除する。
ショートカットファイル削除

以上で終了です。
アプリ一覧に戻って見ると、ヤフージャパンのサイトのアプリが無くなっています。

サイトをアプリビューに追加の場合、インストールしたわけでは無いので、アプリを右クリックしてもアンインストールというメニューが出てこず、どうやったら削除できるのだろう?とちょっと迷ったので、書いてみました。
単にショートカットとして追加されており、そのショートカットファイルを削除すればよかったのですね。

よろしければご参考にどうぞ。

※1)Windows8でも恐らく同様の方法で出来るかとは思いますが、当方の環境は8.1の為、8.1での方法として記述しています。

※2)Windows8 RTでも同様の事が出来るかどうかは不明です。(RT機を持っていないので検証不可)