(Codeigniter)使用foreach填充视图,并根据会话数据

时间:2015-12-19 01:49:21

标签: php codeigniter

我目前正在为我的应用程序(公司时区)设置更新公司详细信息页面,我已经构建并输出了一个时区/区域设置列表,其中包含了PHP的内置值以及所有这些内容输出很好。

我的问题是,我不能为我的生活,弄清楚如何设置选择'使用foreach将数组显示到select ...

时的值

模型

//Timezone listing generated from PHP locales
function tz_list()
{
$zones_array = array();
$timestamp = time();
foreach(timezone_identifiers_list() as $key => $zone) {
    date_default_timezone_set($zone);
    $zones_array[$key]['zone'] = $zone;
    $zones_array[$key]['diff_from_GMT'] = 'UTC/GMT ' . date('P', $timestamp);
}
return $zones_array;
}

控制器

//set locale display
$data['userOrglocale'] = $this->session->userdata('locale');

//load locale list from model
$data['tz_list'] = $this->account_model->tz_list();

查看

 <div class="form-group">
    <label class="col-lg-3 control-label">Time Zone:</label>
    <div class="col-lg-8">
        <div class="ui-select">
            <select id="user_time_zone" class="form-control">

            <?php
                foreach($tz_list as $key => $value)
                {
                    if ($userOrglocale == $tz_list['zone'])
                    {
                       $selected = 'selected';
                    }
                echo '<option value=' . $key['zone'] . $selected . '>' . $value['zone'] . ' (' . $value['diff_from_GMT'] . ')</option>';
                }
             ?>
            </select>
        </div>
    </div>
</div>

在没有Javascript / AJAX的情况下执行此操作的能力会很好(因为我不太了解/很多/根本没有)但我知道我只能用HTML / PHP做很多事情......

2 个答案:

答案 0 :(得分:0)

报价发布。 你应该改变这个

echo '<option value=' . $key['zone'] . $selected . '>' . $value['zone'] . ' (' . $value['diff_from_GMT'] . ')</option>';

echo '<option value="' . $key['zone'] .'" selected="'. $selected . '"'>' . $value['zone'] . ' (' . $value['diff_from_GMT'] . ')</option>';

更新1

模型

//Timezone listing generated from PHP locales
function tz_list()
{
$zones_array = array();
$timestamp = time();
foreach(timezone_identifiers_list() as $key => $zone) {
    date_default_timezone_set($zone);
    $zones_array[$zone] = 'UTC/GMT ' . date('P', $timestamp);
}
return $zones_array;
}

控制器

//set locale display
$data['userOrglocale'] = $this->session->userdata('locale');

//load locale list from model
$data['tz_list'] = $this->account_model->tz_list();

查看

 <div class="form-group">
    <label class="col-lg-3 control-label">Time Zone:</label>
    <div class="col-lg-8">
        <div class="ui-select">
            <?php
                echo form_dropdown(array('id' => 'user_time_zone'), $tz_list, $userOrglocale);
            ?>
        </div>
    </div>
</div>

答案 1 :(得分:0)

不是最优雅的解决方案,但在我需要的时候工作并保存数据:  只有更改位于视图

<?php
foreach($tz_list as $key => $value)
{
    if ($userOrglocale == $value['zone'])
    {
    $selected = 'selected';
    }
    else
    {
    $selected = '';
    }
    echo '<option value="' . $value['zone'] . '"' . $selected . '>' . $value['zone'] . ' (' . $value['diff_from_GMT'] . ')</option>';
    }
    ?>