0

在我的应用程序中,我试图用数据库表中的行填充侧边栏菜单列表。更具体地说,我尝试检索与登录用户具有相同 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 测试并确认查询部分是好的。我应该怎么做才能让数组数据也列在模板化侧边栏视图中?

4

1 回答 1

1

解决,任何人浏览。

在控制器的 index 方法中传递数组,如下所示。

$data['result'] = $this->team_m->get_team_by_coach();

$this->load->vars($data);

在侧边栏视图中,如下所示:

<ul id="menu" class="nav nav-pills nav-stacked">
<li><a href="<?php echo base_url(); ?>"><span class="glyphicon glyphicon-list"></span>My Teams</a></li>
    <ul id="submenu" class="nav">
        <?php foreach ($result as $row): ?>
        <?php echo '<li><a href="http://localhost/master/index.php/team/' . $row['id'] . '">' . $row['teamname'] . '</a></li>';?> 
        <?php endforeach; 
            if(count($result) <= 2) 
            {
                echo '<li><a data-toggle="modal" id="create_team" data-backdrop="true" href="#create_team_modal" href="base_url(index.php/team/create_team)"><span class="glyphicon glyphicon-plus"></span>Create a team</a></li>';
            }
         ?>
    </ul>
<li><a href="<?php echo base_url(); ?>index.php/message"><span class="glyphicon glyphicon-envelope"></span>Messages</a></li>
<li><a href="<?php echo base_url(); ?>index.php/profile"><span class="glyphicon glyphicon-user"></span></i>My Profile</a></li>
<li><a href="<?php echo base_url(); ?>index.php/auth/logout"><span class="glyphicon glyphicon-log-out"></span>Logout</a></li>

于 2014-01-03T15:44:31.060 回答