質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

4058閲覧

cakePHPの日付入力コントロールについて

hanabi

総合スコア11

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

1クリップ

投稿2016/07/21 13:39

編集2016/07/21 15:59

cakePHP 2.5.5

viewファイルで
$this->Form->input('temp_date',
array(
'type' => 'date',
'label' => false,
'dateFormat' => 'YMD',
'selected' => array('year'=>date('Y'),'month'=>date('m'),'day'=>date('d')),
'maxYear' => date('Y') + 5,
'minYear' => date('Y') - 5,
'div' => false
));

これをブラウザで出力すると
selectコントロールが3つ表示されます。

ここで質問が3つあります。
(1)
3つのコントロールのうち、左から2番目の月のselectコントロールの選択肢が
January から December になります。
やりたいことは、この選択肢を1から12にしたいのですが、どこを変更または確認したらいいでしょうか?
(2)
ブラウザで出力されたHTMLを見ると
selectコントロールの前後に

<div class="input date"> </div> が出力されます。 このタグを出力しないようにしたいのですが、どうしたらいいでしょうか? (3) 出力されたHTMLを見ると、以下のように、selectコントロールの間に「-」(半角ハイフン)が出力されます。 <select></select> 半角ハイフン <select></select> 半角ハイフン <select></select> この「-」(半角ハイフン)を表示しないようにしたいですが、どうしたらいいでしょうか?

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

オプションに以下の2つを加えてください。

PHP

1'monthNames' => false, // 月を数字で表示 2'div' => false, // divタグを出力しない

……でも、'div' => falseはすでに入れてあるんですよね。
なんで効かないんでしょうね。

投稿2016/07/21 14:22

coba-coba

総合スコア1409

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hanabi

2016/07/21 15:52

ありがとうございます。 (1) 「月」の選択肢が、「01」から「12」になりました。「1」から「12」にすることはできるのでしょうか? ちなみに「日」の選択肢は、「1」から「31」です。 (2) 'div' => false をつけないと <div class="input date"> <div> <select ></select> <select ></select> <select ></select> </div> </div> となります。 divタグは、2つ付加されます。 'div' => false をつけると 内側のdivタグが付加されません 外側のdivタグをはずしたいです。
hanabi

2016/07/21 16:45

(3)について 'separator' => '&nbsp;' で解決しました
coba-coba

2016/07/21 16:47 編集

(1) まず、 lib/Cake/View/Helper/FormHelper.php を app/View/Helper/FormHelper.php にコピーしてください。 コアはいじらず、コピーしたFormHelper.phpを修正します。 そして、 _generateOptions()を探し出してください。 case 'month':の下に以下のコードがあります。 for ($m = 1; $m <= 12; $m++) { $data[sprintf("%02s", $m)] = strftime("%m", mktime(1, 1, 1, $m, 1, 1999)); } このfor文の中の処理を $data[$m] = ltrim(strftime("%m", mktime(1, 1, 1, $m, 1, 1999)), '0'); に変えてください。 配列のキーと値を先頭に0が付かないようにしてやります。 ---------------------------------- (2) cakePHP 2.5.5を試せないので分かりませんが、2.8なら希望通りの出力になるのですが…。 (1)と同じファイルでdivタグを生成する部分をいじればいけると思います。
hanabi

2016/07/21 17:33

ありがとうございます。 (1) 月の選択肢は「1」から「12」になりました。が、 'selected' => array('year'=>date('Y'),'month'=>date('m'),'day'=>date('d')), 初期で、当日日付を選択した状態にしたかったのですが、できません。 'selected' => array('year'=>date('Y'),'month'=>date('n'),'day'=>date('d')), に変更しても当月選択状態になりませんでした。 (2) 解決しました。 viewファイルのオプションでは変更できなかったのですね・・ ありがとうございます。
hanabi

2016/07/21 17:49

(1) FormHelper.phpを修正し、 結局、日も月も「0」が付く形にしました。この状態で、一応は解決です。 でも、なんとなく釈然としません。
coba-coba

2016/07/21 18:12

(1)もCakePHP2.8なら希望通りの動きになるんですけどね。 2.5.5から改良されたのかもしれません。 ちなみに、F5で更新せず、ブラウザのURLの欄にカーソルを合わせてエンターキーで更新していますか? それとキャッシュの削除は試しましたか? (tmp/cache以下) (2)はもしかしたらオプションでなんとかなるのかもしれませんが、私は知らないです。 CakePHP3なら簡単なんですが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問