radioボタンを実装

Radioボタンの実装は、セレクトボックスとほぼ同じです。
個人的にはラジオボタンをすすんで使用することは少ないのですが、2択くらいの選択肢であれば非常に便利ですよね。
今回は、その実装方法 デモ

モデルは、今回も以下

CREATE  TABLE IF NOT EXISTS `prefectures` (
  `id` INT NOT NULL AUTO_INCREMENT,  -- id
  `prefecture` VARCHAR(8) NOT NULL,  -- 都道府県
  `area` VARCHAR(8) NOT NULL,        -- 地方
  PRIMARY KEY (`id`) )

実装方法

find('list')でfieldsに対して2項目設定します。1つ目がvalue、2つ目が実際に画面に表示される値が設定されます。規定値(初期値)を指定する場合は、単一の値でvalueを指定します。

// コントローラ
$this->set( 'list', $this->Prefecture->find( 'list', array( 
    'fields' => array( 'id', 'prefecture')
)));

// ビュー
echo $this->Form->input( 'prefecture', array( 
    'type' => 'radio', 
    'options' => $list,
    'value' => $value,        // 規定値(初期値)をvalueで指定
//  'between' => '<hr>',    // fieldsetのlegend要素と先頭のラジオボタンの間に入れる要素
//  'separator' => '<br />',  // 各ラジオボタンの間に挿入する要素
//  'legend' => false         // falseに設定するとfieldset要素を除去します
));

ラジオボタン横並び

// ビュー
echo $this->Form->input( 'prefecture', array( 
    'type' => 'radio', 
    'options' => $list,
    'value' => $value,            // 規定値(初期値)をvalueで指定
    'div' => 'radio-horizontal',  // divにclassを付与
    'style' => 'float:none;',     // input要素にfloat:none
));

ラジオボタンの親要素(div)にclassを付与して(ここではradio-horizontal)
あとは、labelにdisplay: inline-blockをつけるだけです。

input[type=radio] {
    margin:0px;
    width:20px;
}
.radio-horizontal label{
    display: inline-block;
}

ヘルパー内でlabelにclassやstyleを追加できると思ったんですが、どうもダメです。

  • このエントリーをはてなブックマークに追加

関連記事

FormヘルパーのMagicOption (マジックオプション) 

Formヘルパーでは、「フィールド名」,「テーブルカラムのデータ型」もしくはモデルの「バリデーション設定」によりフォーム要素を決定したり、自動で属性を付与する「マジックオプション」と呼ばれるものがある

ユーザ登録(仮登録・メール・本登録)

以前1.3版で投稿した「ユーザ登録」処理の2.x版を作成しました。フローは同じで以下のようにします。 1. メールアドレス・パスワードでユーザ登録 2. この時点では仮登録として、本登録用のU

パス定数と変更方法やURLの取得

CakePHPは基本的にはディレクトリそのまま配置することで構築が可能ではありますが、設定パスを変更することでセキュリティに考慮した構成にすることや運用性をもたせたものにすることが可能になります。

バリデーション前後に処理を追加できる「beforeValidate」「afterValidate」

CakePHPでは、「beforeValidate」「afterValidate」というバリデーション処理の前後で追加の処理を実装できるコールバック関数が用意されています。 beforeVali

checkボックスを実装

selectボックスに引き続いてcheckボックスの実装方法をおさらいしてみます。 コードは、CakePHP 2と1.3両方で実装可能です。デモ モデルは、こちらも以下 CREATE TA

多言語サイト向けに翻訳ファイルを使って翻訳を行う

CakePHPには、翻訳をビヘイビアを使用する方法と翻訳ファイルを使用する方法の2つがあるそうです。(他にもあるのかな?) 今回は、翻訳ファイルを使用して言語の切り替えを行い、その言語設定をCook

Formヘルパーのinputタグのdiv/labelなどの設定

Formヘルパーのinputではデフォルトでは以下のようにdivで囲われて、labelが付与されて出力されます。 CSSのフレームワークなどであらかじめ決まったスタイルがある場合に便利に作られていま

ネストしたリストを出力「nestedList」

DBやJSONからデータを取得して、そのデータをもとにメニュー表示などネストしたリストを出力させたい場合に「nestedList」が便利です。 ヘルパーに渡すデータは連想配列である必要があります。(

アップロードファイルのバリデーションルール

CakePHP 2.2や2.3になってファイルアップロードに対するルールがコアバリデーションに追加されているようで、まとめてみました。 コアバリデーション 関連しそうなルールは以下の4つの

複数ファイルアップロードフォーム

CakePHP 2.0からはHTML5が標準でサポートとなり、複数ファイルアップロードのためのフォーム記述が容易になりました。 View (ビュー) 配列 Array (

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

PAGE TOP ↑