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()で値がとれないのか謎でしたがようやく納得しました。