院生エンジニアのにっき

  • Change style to Blue
  • Change style to Red
  • Change style to Green
  • Change style to Pink

CakePHP1.2ベータ版リリース   2008-01-04

CakePHPのベータ版(こないだまではプレベータ版)がついにリリースされました。1月2日にリリースされていたんですね("ついに1.2ベータのリリース!&Stable: 1.1.19.6305" フォーラム - CakePHP Users in Japan

新規で開発中の書籍管理アプリはプレベータ版を使っていたので早速ベータ版に切り替えて調査がてら開発していきます。

・・・ちなみに簡単な$form->inputがベータ版にアップグレードしたとたんにエラーを吐いたのでその報告を。。

CakePHP1.2系からHtmlHelperではなく便利なFormHelperが搭載されたのですが、ベータ版ではプレベータ版で動いていた以下のコードでエラーが出ます。

  1. <?php echo $form->create('Book',array('action'=>'search')); ?>
  2.   <?php echo $form->input('Book/words','text'); ?>
  3.   <?php echo $form->end('Search');?>
  4. </form>

エラーは以下のように出ます

Warning (2): array_merge() [function.array-merge]: Argument #2 is not an array [APP\views\helpers\form.php, line 494]
Notice (8): Undefined index:  before [APP\views\helpers\form.php, line 650]
Notice (8): Undefined index:  between [APP\views\helpers\form.php, line 651]
Notice (8): Undefined index:  after [APP\views\helpers\form.php, line 652]

どうやらFormHelperのinput関数まわりのようです。

最新版のScaffoldを利用してみるとinput('Book/words','text'); ?>の部分がさらに簡潔に記述できるようになっていました。以下のコードでエラーがなくなります。

<?php echo $form->create('Book',array('action'=>'search')); ?>
  <?php echo $form->input('words'); ?>
  <?php echo $form->end('Search');?>
</form>

$form->inputにてモデルの指定とtextがデフォルトになっているようですね。ただ、これが気持ち悪いという人は

<?php echo $form->input('words',array('type'=>'text')); ?>

でそのタグはtext入力用のinputタグのだよと明示的に指定することができます。

ちなみにエラーで出ていたオプション(before,between,after)ですが、hiddenタグを除くタグの前後に特定の文字列が付加できるように追加するためのオプションです。ただ、betweenにつきましてはtypeによって挿入位置が異なるのでhelpersのform.phpの655行目以降を自分でチェックする必要があるかと思います。

日本においてCakePHPと元となったRuby on RailsのGoogle TrendsにおいてCakePHPが上回るようになって久しいですが(Google Trends: CakePHP,Ruby on Rails)、今後もどんどん発展していって欲しいです。


コメントを書く