Codeigniter foreach Выберите пункт меню «Выбрано» - PullRequest
0 голосов
/ 18 февраля 2019

Я создаю опцию выбора темы для приложения.Я хочу, чтобы пользователь мог выбрать из выбранной опции, какую тему он хочет, светлую или темную.

Я храню названия тем в базе данных примерно так:

database

Затем я вызываю все темы в модели и возвращаю массив с таким кодом:

public function getThemes() {
    $query = $this->db->query('SELECT * FROM theme');
    return $query->result_array();
}

Я использую свой конструктор, чтобы получить данные и отобразить их в виде моих настроек, какИтак: (Я отправляю несколько вещей одновременно в $ this-> data, поэтому он находится в массиве, но я вырезал этот код)

$this->data = [
            'themes' => $this->model_setting->getThemes()
        ];
        $this->render('backend/standart/administrator/setting/setting_general', $this->data);

В моем HTML-представлении у меня есть следующееHTML, который успешно отображает правильные 2 доступные темы:

<div class="col-sm-12">
                <label>Select Your Desired Theme</label><br>
                <select class="form-control" name="site_color_theme" id="site_color_theme">
                  <?php foreach ($themes as $theme): ?>
                    <option value="<?= $theme['theme']; ?>" ><?= $theme['name']; ?></option>
                  <?php endforeach; ?>
                </select>
            </div>

Когда я сохраняю форму настроек, я обновляю свою таблицу опций в базе данных с названием темы.Html Body Class вызывает эту таблицу параметров, находит выбранную тему и использует ее для визуализации определенной таблицы стилей CSS.

Проблема, с которой я сталкиваюсь, заключается в том, что при сохранении моих настроек опция выбора не отображает сохраненнуюназвание темы, показывающее, что это активная выбранная тема.

Как получить параметр «Выбор» для отображения выбранной темы, когда пользователь заходит на страницу настроек для выбора другой темы?

1 Ответ

0 голосов
/ 18 февраля 2019
  1. В таблице theme должен быть столбец active_theme
  2. active_theme установлен на 1 при отправке раскрывающегося списка site_color_theme (остальные записи темы установлены на 0)
  3. Вы должны использовать Codeigniter Form Helper, чтобы сделать это: https://www.codeigniter.com/user_guide/helpers/form_helper.html#form_dropdown
// $themes = Theme list array [id => theme-name, id => theme-name]
// $active_theme = Record of "active_theme" with value equal to "1" 
// $extra = Custom HTML attributes e.g. class="something" onclick="function(js)"

echo form_dropdown('site_color_theme', $themes, $active_theme, $extra);
...