在我的应用程序中,我试图用数据库表中的行填充侧边栏菜单列表。更具体地说,我尝试检索与登录用户具有相同 user_id 的教练的团队名称。我想在菜单中列出登录教练的团队。
在我的模型中,我使用 Active Record 来获取所需的查询结果:
public function get_team()
{
$this->db->select('teamname')->from('teams')->where('coaches', $this->session->userdata('user_id'));
$this->db->order_by('teamname', 'asc');
$query = $this->db->get();
if($query->num_rows() > 0)
{
foreach($query->result_array() as $row)
{
$data[] = $row;
}
return $data;
}
}
在控制器中,我不确定如何将数组数据传递给我的视图。在我的索引函数中,我这样做:
public function index()
{
if (!$this->tank_auth->is_logged_in()) {
redirect('/auth/login/');
} else
{
$data['title'] = 'Team';
$data['main_content'] = 'team_v';
$data['username'] = $this->tank_auth->get_username();
$data['coach'] = $this->tank_auth->is_admin();
$this->load->vars($data);
$this->load->view('includes/template');
}
}
并且在相关的控制器函数中,我尝试将数据直接发送到侧边栏视图,(包含在之前加载的模板文件中):
public function get_team()
{
$data = array(
'result' => $this->team_m->get_team());
$this->load->view('includes/sidebar', $data);
}
视图代码执行标准的 foreach,如下所示:
<li>Teams</li>
<ul>
<?php /* if (empty($result)): */ ?>
<li>Create a team</li>
<?php /* else: */ ?>
<?php foreach ($result as $row): ?>
<li><?php echo $row['teamname'];?></li>
<?php endforeach; ?>
<?php /* endif; */ ?>
</ul>
<li>Messages</li>
<li>My profile</li>
<li><a href="<?php echo base_url('index.php/auth/logout'); ?>">Logout</a></li>
以这种方式将 $data 数组发送到侧边栏是行不通的。我还尝试手动加载模板中的所有视图并将数据传递给视图,但无济于事。无论我如何传递它,它都会给我“为 foreach() 提供的参数无效”错误,这意味着在数组中没有返回任何数据。
但是,如果我在控制器功能中这样做:
public function get_team()
{
$data = array(
'result' => $this->team_m->get_team());
$this->load->view('get_team_v', $data);
}
并在上面的侧边栏视图中使用完全相同的代码创建一个 get_team_v 视图,然后完美地列出所需的结果。我还执行了affected_rows 测试并确认查询部分是好的。我应该怎么做才能让数组数据也列在模板化侧边栏视图中?