Posted on

ラジオボタンを分けて表示する方法

普通にラジオボタンを下記のように作る時は問題ないのですが

$form->input("User.sex", array("type" => "radio","options" => array('1'=>'男性', '2'=>'女性')));

デザイン的にラジオボタンを分けて表示したい時があります。
とりあえず次のようにしてデザインの埋め込みたいところに記述します。

$form->input("User.sex", array("type" => "radio", "options" => array('1'=>'男性')));
$form->input("User.sex", array("type" => "radio", "options" => array('2'=>'女性')));

そうすると両方にhiddenのタグが付いてしまってラジオボタンの値を上手いこと取得してくれません。
そこで調べてみると初期値を指定してあげるとhiddenは出力しないということで

$form->input("User.sex", array("type" => "radio", "options" => array('1'=>'男性', 'value'=>'none')));
$form->input("User.sex", array("type" => "radio", "options" => array('2'=>'女性', 'value'=>'none')));

という感じに指定してあげました。
これで上手く行ったと思ったのですが確認画面に行ってから戻ってくるとラジオボタンのチェックが消えてしまっていました。

そこでさらに調べてみるとフォーラムでこんな解決策が載っていました。

$value = isset($form->data['User']['sex']) ? $form->data['User']['sex'] : -1;
$form->input("User.sex", array("type" => "radio", "options" => array('1'=>'男性', 'value'=>$value)));
$form->input("User.sex", array("type" => "radio", "options" => array('2'=>'女性', 'value'=>$value)));

これでラジオボタンのチェックが戻ってきた時に消える問題もなくなり、きちんと動くようになりました。

Posted on

shellでcakephpのプログラムを動かす方法

shellでcakephpのプログラムを動かす方法を覚書を記述しておきたいと思います。

まず/app/vendors/shellsの中にshellを動かすプログラムを書いたファイルを作ります。
今回はcron.phpとしました。
そのファイル内で次のようなコードを書きます。

class CronShell extends Shell{
var $name = 'Cron';
function sendEmail() {
//命令を記述(メールを送信する)
}
function deleteFlag() {
//命令を記述(デルフラグの立っているのを物理削除)
}
}

ここでのクラス名は先ほどつけたファイル名と同じにしておきます。
クラスの中では複数の命令が記述できます。

続きを読む shellでcakephpのプログラムを動かす方法