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
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 | /** * 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側では、以下のように使います。
1 | <?php echo $ktai ->form_create( $model , $options ); ?> |
AUケータイで試してみましたが、結果は上々でした。
Pingback: CakePHP:AU携帯とSecurityコンポーネント | 自転車で通勤しましょ♪ブログ