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コンポーネント | 自転車で通勤しましょ♪ブログ