あべてっく

役に立ったり立たなかったりする内容を備忘録的にちょこちょこと。
 

CakePHPでFormヘルパーのyearを使った時のPOST値がarrayで来た(・ ・`

投稿日 2012年4月26日  カテゴリ : PHP  タグ :

CakeのFormヘルパーにあるyearメソッドを使って、mogemogeデータベースにあるhogeテーブル内のintフィールドhoge_date_yに年を登録してみます。

app/View/hoge/index.ctp

<?php echo $this->Form->create(‘Hoge’, array(‘type’=>’post’,’action’=>’./addRecord’, ‘inputDefaults’=>array( ‘label’=>false, ‘type’=>’text’, ‘div’=>false))); ?>
<?php echo $this->Form->year(‘hoge_date_y’, (date(‘Y’) -1), (date(‘Y’) +1), array(‘empty’=>’-‘, ‘orderYear’=>’desc’, ‘value’=>date(‘Y’))); ?>年
<?php echo $this->Form->end(‘ほげ年登録’); ?>

app/Controller/HogesController.php

public function addRecord(){
if (!empty($this->request->data)) {
if ($this->Hoge->save($this->request->data)) {
$this->redirect(array(‘action’ => ‘hogelist’));
}
}
}

んで実行してみます。

Database Error
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘Array’ in ‘field list’

あり? (・ω・`
なんか配列が来てますね。
ではPOSTされたデータを見てみます。

app/Controller/HogesController.phpのアクションaddRecordを変更

public function addRecord(){
if (!empty($this->request->data)) {
$this ->autoRender = false;
var_dump($this->request->data);
/*
if ($this->Hoge->save($this->request->data)) {
$this->redirect(array(‘action’ => ‘hogelist’));
}
*/
}
}

結果

array(1) { ‘Hoge’ => array(1) { ‘hoge_date_y’ => array(1) { ‘year’ => string(4) “2012” }}}

なんぞこれw
なんか勝手にyearというキーで連想配列化されてますw

とりあえずぐぐってみましたが仕様?のようです。配列化を無効にするオプション等も見つかりません。
ちなみに

$this->Form->month()
$this->Form->day()
$this->Form->input(‘hoge_date_y’,array(‘type’=>’date’, ‘dateFormat’=>’Y’))

でも同じような現象が起こるようです。

仕方ないのでとりあえずアクション内に配列から値を取って直入れする処理を書きます。

app/Controller/HogesController.php

public function addRecord(){
if (!empty($this->request->data)) {
$this->request->data[‘Hoge’][‘hoge_date_y’] = $this->request->data[‘Hoge’][‘hoge_date_y’][‘year’];
if ($this->Hoge->save($this->request->data)) {
$this->redirect(array(‘action’ => ‘hogelist’));
}
}
}

これでエラーは消えて登録できるようになりましたが・・・うーん(^^;
 
 

WEB+DB PRESS Vol.74
WEB+DB PRESS Vol.74

posted with amazlet at 13.06.24
井上 誠一郎 奥野 幹也 田中 慎司 西嶋 悠貴 伊藤 直也 登尾 徳誠 天野 祐介 後藤 秀宣 ヒノケン 近藤 宇智朗 近藤 嘉雪 渡邊 恵太 堤 智代 中島 聡 A-Listers はまちや2 川添 貴生
技術評論社
売り上げランキング: 2,008

 

コメントを残す

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