CakePHP:【解決】AU携帯でSecurityComponent

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ケータイで試してみましたが、結果は上々でした。


カテゴリー CakePHP, PHP | タグ    | パーマリンク

コメント・トラックバック一覧

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

コメントを残す

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