system/hepler/form_helper.php
確認画面から、フォームに戻った時にどうして、set_value()で値がなぜか取れない。
なぜ取れないのかわからない(T-T)
ということで、調べてみました。
(T-T).o(けっこう恥ずかしい理由だったわけですが、あえて公開です。)
/** * Form Value * * Grabs a value from the POST array for the specified field so you can * re-populate an input field or textarea. If Form Validation * is active it retrieves the info from the validation class * * @access public * @param string * @return mixed */ if ( ! function_exists('set_value')) { function set_value($field = '', $default = '') { if (FALSE === ($OBJ =& _get_validation_object())) { if ( ! isset($_POST[$field])) { return $default; } return form_prep($_POST[$field], $field); } return form_prep($OBJ->set_value($field, $default), $field); } }
で、form_validationのset_valueメソッドの
return $this->_field_data[$field]['postdata'];
$this->_field_data[$field][‘postdata’];がNULLだったりする・・・orz
($this->_field_data[$field]にはきちんとデータが格納されている。)
なので、set_value(“hogehoge”);で値が取れない。
form_validationのset_value
function set_value($field = '', $default = '') { if ( ! isset($this->_field_data[$field])) { return $default; } return $this->_field_data[$field]['postdata']; }
$this->_field_data[$field][‘postdata’];がnullなので、returnで値が帰ってきてもnull…..
ではどこでこの値をセットしているかをみてみると、
Form_validation.php 333行目あたり。
function run()内で処理されてる。
$this->form_validation->run();
を実行した後でなければ、set_value(“フィールド名”,”初期値”);で、POSTで送信したデータが取れないようです。
確認画面から、フォームに戻った時にどうして、set_value()で値がとれないのか謎でしたがようやく納得しました。