SecurityComponentを使うとAUケータイでブラックホールに吸い込まれるという話を昨日書いたわけですが、解決方法が見つかったので、それを書きます。
ちなみにCakePHPユーザ会のほうにも投稿しておいた。
$form->create で出力されるfieldsetを消す方法
昨日の投稿にも書きましたが、SecurityComponentを使うとAUケータイではdisplay:noneになってるfieldsetタグ内のトークンがPOSTされません。よって、fieldsetタグのみを削除すれば動くに違いないということで、fieldsetタグを削除する方法です。
参考にしたサイトは以下です(英語)。
http://cakeqs.org/eng/questions/view/disable_fieldset_around_an_hidden_form_element
CakePHPユーザ会のほうに書いた方法でもいけると思いますが、何度も使いたいので自分はKtai LibraryのKtaiヘルパーにメソッドを追加しました。
/app/views/helpers/ktai.php
/**
* Ktai helper class for CakePHP1.2
*/
class KtaiHelper extends Helper {
var $helpers = array('Html', 'Form'); // 'Form'を追加した
var $_lib3gk = null;
// ... 最後に以下の2つのメソッドを追加
function form_create($model = null, $options = array()){
$out = $this->Form->create($model, $options);
return strip_tags($out, '<form><input>');
}
function form_end($options = null){
$out = $this->Form->end($options);
return strip_tags($out, '<form><input>');
}
}
View側では、以下のように使います。
<?php echo $ktai->form_create($model, $options); ?>
AUケータイで試してみましたが、結果は上々でした。

Pingback: CakePHP:AU携帯とSecurityコンポーネント | 自転車で通勤しましょ♪ブログ