在我的应用程序中,我试图用数据库表中的行填充边栏菜单列表。更具体地说,我尝试在教练与登录用户具有相同user_id的情况下检索队名。我想列出菜单中列出的已登录教练队伍。CodeIgniter:将数据库数组数据传递给模板文件
在我的模型,我使用的活动记录,以获得所需的查询结果:
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;
}
}
在Controller中,我不知道如何去以数组数据传递给我的看法。在我的索引功能,我这样做:
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()提供的无效参数错误,AFAIK意味着没有数据返回到数组中。
但是,如果我为此在控制器功能:
public function get_team()
{
$data = array(
'result' => $this->team_m->get_team());
$this->load->view('get_team_v', $data);
}
,并与上述侧边栏视图完全相同的代码一get_team_v视图,则所期望的结果是完全列出。我还执行了affected_rows测试并确认查询部分是好的。我应该怎样才能让阵列数据也列在模板侧栏视图中?
尝试使用'$按行> teamname;' – Albzi
顺便说一句,你不必遍历$查询 - > result_array(),直接返回给你相同的数组。 – xiankai
不幸的是$ row-> teamname;没有做到这一点。你是对的,我刚刚添加了“_array”,看它是否工作并忘记删除它。 – sundfjord