タグ : form

CakePHPのradioボタンで、選択肢の後ろにbrタグを入れて改行させたい

CakePHPのradioボタンで、選択肢が長い場合等、

brタグを後ろに入れて改行したいことがあるかと思います。

そんな場合は、separatorを使用します。

<?php
$calcel_flg_arr = array("1"=>"機能が使いづらい、分かりづらい", "2"=>"参考にならなかった", "3"=>"使わなくなった", "4"=>"運営方針に不満があった", "5"=>"その他");
echo $this->Form->input('cancel_flg', array("type"=>"radio", "options"=>$calcel_flg_arr, 'separator' =>'<br />'));
?>

以下のようなHTMLを吐き出してくれます。

<input type="hidden" name="data[Entrepreneur][cancel_flg]" id="EntrepreneurCancelFlg_" value=""/>
<input type="radio" name="data[Entrepreneur][cancel_flg]" id="EntrepreneurCancelFlg" value="1" />機能が使いづらい、分かりづらい<br />
<input type="radio" name="data[Entrepreneur][cancel_flg]" id="EntrepreneurCancelFlg1" value="2" />参考にならなかった<br />
<input type="radio" name="data[Entrepreneur][cancel_flg]" id="EntrepreneurCancelFlg2" value="3" />使わなくなった<br />
<input type="radio" name="data[Entrepreneur][cancel_flg]" id="EntrepreneurCancelFlg3" value="4" />運営方針に不満があった<br />
<input type="radio" name="data[Entrepreneur][cancel_flg]" id="EntrepreneurCancelFlg4" value="5" />その他

CakePHPで日付選択のセレクトボックスを「年月日」表示にしたい

CakePHPで日付選択のセレクトボックスを「年月日」表示にしたい

ということがあって調べたのでメモ。

CakePHP1.2用のものは見つかったのですが、

CakePHP2用のものが見つからなかったので、

以下の記事を参考にちょっと変更を加えました。

CakePHP1.2 HTMLヘルパーの日付コンボを年月日で表示する

コントローラーに以下を追加(1.2と同じ対応)。


$attr = array(
'minYear' => 2000,
'maxYear' => date('Y'),
'separator' => array('年', '月', '日'),
'monthNames' => false
);
$this->set('attr', $attr);
?>

lib/Cake/View/Helper/FormHelper.phpをapp/View/Helpler/にコピーして開きます。

public function dateTime内の以下の箇所を変更します。


$opt = implode($separator, $selects);

の1行を以下に置き換えます。

$opt = "";
$i = 0;
if (is_array($separator)) {
foreach($selects as $select) {
$opt .= $select.$separator[$i];
$i++;
}
} else {
$opt = implode($separator, $selects);
}

(これも変更内容は1.2と同じ)

ビューファイルに以下のように書きます。


echo $this->Form->dateTime('foo_date', 'YMD', 'NONE', $attr);

JavascriptでFormのsubmitを行う

FormのsubmitをJavascriptで行う方法です。

ボタンでsubmitする場合は、以下のように書きます。

<input type="submit" value="登録">

Javascriptで実行する場合は以下のようにします。

<script>
function do_submit() {
  document.forms['hoge'].submit();
}
</script>

<form method="post" name="hoge" action="index.php">
<input type="text" name="name" />
<input type="submit" value="登録" />
</form>

<input type="button" value="登録" onClick="do_submit();">

type=”submit”をクリックしても、type=”button”をクリックしても同じように動作します。
Javascriptの方のforms['hoge']には、formタグのname=”hoge”の値をセットします。

また、Javascriptの方で変数を追加してpostしたいということがよくあると思います。
jQueryを使って以下のようにしてやります。

$('<input>').attr({
  type: 'hidden',
  id: 'hoge_id',
  name: 'hoge',
  value: 'ほげ'
}).appendTo('#target_id');

これで、id=”target_id”の要素に、inputタグのtype=”hidden”が追加されます。

まとめると、以下のようになります。

<script>
function do_submit() {
  $('<input>').attr({
    type: 'hidden',
    id: 'hoge_id',
    name: 'hoge',
    value: 'ほげ'
  }).appendTo('#target_id');
  document.forms['hoge'].submit();
}
</script>

<form method="post" name="hoge" action="index.php">
<div id="target_id">
  <input type="text" name="name" />
  <input type="submit" value="登録" />
</div>
</form>

<input type="button" value="登録" onClick="do_submit();">