Как я могу использовать set_value CodeIgniter для поля, которое является массивом? - PullRequest
0 голосов
/ 18 июня 2010

У меня есть выпадающий список "удобства []", и это массив.Когда я использую form_validation CodeIgniter, я хочу правильно заполнить его с помощью set_value, но я не могу.Кто-нибудь есть какие-либо материалы по этому вопросу?

1 Ответ

2 голосов
/ 18 июня 2010

Глядя на источник Codeignitor 1.7.2, реализация set_value выглядит так:

/**
 * Get the value from a form
 *
 * Permits you to repopulate a form field with the value it was submitted
 * with, or, if that value doesn't exist, with the default
 *
 * @access  public
 * @param   string  the field name
 * @param   string
 * @return  void
 */ 
function set_value($field = '', $default = '')
{
    if ( ! isset($this->_field_data[$field]))
    {
        return $default;
    }

    return $this->_field_data[$field]['postdata'];
}

Обратите внимание, что он не поддерживает массивы. С другой стороны, set_select Codeignitor действительно поддерживает массивы:

// --------------------------------------------------------------------

/**
 * Set Select
 *
 * Enables pull-down lists to be set to the value the user
 * selected in the event of an error
 *
 * @access  public
 * @param   string
 * @param   string
 * @return  string
 */ 
function set_select($field = '', $value = '', $default = FALSE)
{       
    if ( ! isset($this->_field_data[$field]) OR ! isset($this->_field_data[$field]['postdata']))
    {
        if ($default === TRUE AND count($this->_field_data) === 0)
        {
            return ' selected="selected"';
        }
        return '';
    }

    $field = $this->_field_data[$field]['postdata'];

    if (is_array($field))
    {
        if ( ! in_array($value, $field))
        {
            return '';
        }
    }
    else
    {
        if (($field == '' OR $value == '') OR ($field != $value))
        {
            return '';
        }
    }

    return ' selected="selected"';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...