dポイントプレゼントキャンペーン実施中!

CodeIgniterのset_value()メソッドが2つある理由。その違いは何でしょうか?

・/system/helpers/form_helper.php
・/system/libraries/Form_validation.php
それぞれに「set_value($field = '', $default = '')」がありますが、
この二つはどう違うのでしょうか?

set_value()メソッドが書いてあるviewが、
どちらのメソッドを呼んでいるか、
どこで判断すればよいのでしょうか?
form_input( 'name', set_value('name') )

▽フォームヘルパー
  http://codeigniter.jp/user_guide_ja/helpers/form …
▽フォームバリデーション(検証)
  http://codeigniter.jp/user_guide_ja/libraries/fo …

A 回答 (1件)

フォームバリデーションライブラリクラスをロードするとコンストラクタでフォームヘルパーが


ロードされます。
なので、フォームバリデーションライブラリを利用する際は、フォームヘルパーを明示的に
ロードする必要はありません。

フォームバリデーションライブラリクラスを使用しているページで、フォームヘルパーの
「 set_value() 」関数を実行すると、フォームバリデーションライブラリクラスの「 set_value() 」
メソッドのラッパーとして動作します。
つまり、フォームヘルパーの「 set_value() 」関数内でフォームバリデーションクラスの
「 set_value() 」メソッドを実行しています。

フォームバリデーションライブラリクラスを使用していない時に、フォームヘルパーの
「 set_value() 」関数を実行すると、$_POSTグローバル変数から値を取得します。

ちなみに、フォームヘルパーの「 set_value() 」は、「htmlspecialchars()」などで値を
サニタイズしてから返すため、バリデーションライブラリを利用しているかにかかわらず
ヘルパーの「 set_value() 」関数を利用した方が安全です。

フォームバリデーションライブラリクラスの「 set_value() 」でも「 set_rules() 」メソッドで値を
サニタイズすることができるので、サニタイズしていれば、フォームバリデーションライブラリクラスの「 set_value() 」メソッドを利用しても安全です。

参考URL:http://www.ci-guide.info/practical/library/form_ …
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
説明大変詳しく、またとっても分かりやすかったですー

お礼日時:2012/05/23 10:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!