通过DB和CI创建动态链接

时间:2011-08-21 04:07:16

标签: php codeigniter

我正在尝试获取我的结果集并将其发送到视图,以便可以相应地显示它并且我在理解这里找到的文档时遇到问题我有一个模板视图,我想以某种方式显示如下:这只是给你一个想法。在模板下面或者什么不是我的控制器的代码和从数据库中获取类别名称的模型。还包括我目前的视图(php语法错误) )。

http://codeigniter.com/user_guide/database/results.html

<div class="menu">
        <ul class="clear">
            <li class="active"><a href="/">Dashboard</a></li>
            <li><?php echo anchor('cpanel/modules/articles', 'Articles'); ?></li>
            <li><a href="styles.html">Styles</a></li>
            <li><a href="tables.html">Tables</a></li>
            <li><a href="charts.html">Charts</a></li>
            <li><a href="gallery.html">Image Gallery</a></li>
            <li><a href="settings.html">Settings</a></li>
        </ul>
    </div>

控制器:

function index()
{
    $id = $this->tank_auth->get_user_id();
    $data = $this->Dashboard->get_user_info($id);
    $rows = $this->Dashboard->get_menu_categories();
    $this->template->set_layout('cpanel')->enable_parser(false);
    $this->template->set('data', $data);
    $this->template->set('menu_categories', $rows);
    $this->template->set_partial('header', 'partials/header');  
    $this->template->set_partial('sidebar', 'partials/sidebar');  
    $this->template->set_partial('content', 'partials/content');      
    $this->template->set_partial('footer', 'partials/footer');
    $this->template->build('/cpanel/index');
}

型号:

/**
 * Get menu categories
 *
 * @param   none
 * @param   none
 * @return  object
 */
function get_menu_categories()
{
    $this->db->select('*');
    $this->db->from('menu_categories');
    $this->db->where('status_id', '1');
    $this->db->order_by('sort_order', 'desc'); 

    $query = $this->db->get();

    return $row = $query->result_array(); 
} 

查看:

<div class="menu">
        <ul class="clear">
            <?php
            foreach ($row as $row)
            {
               echo "<li>" anchor('".$row['linkURL']."', '$row['category_name']')"</li>";
            }
            ?>                
        </ul>
    </div>

编辑:这是我的新代码。我收到以下错误消息:严重性:通知

消息:未定义的变量:行

文件名:partials / header.php

行号:34 遇到PHP错误

严重性:警告

消息:为foreach()提供的参数无效

文件名:partials / header.php

行号:34

控制器:

function index()
{
    $id = $this->tank_auth->get_user_id();
    $data = $this->Dashboard->get_user_info($id);
    $menu_data['rows'] = $this->Dashboard->get_menu_categories();
    $this->template->set_layout('cpanel')->enable_parser(false);
    $this->template->set('data', $data);
    $this->template->set('menu_categories', $menu_data);

    $this->template->set_partial('header', 'partials/header');  
    $this->template->set_partial('sidebar', 'partials/sidebar');  
    $this->template->set_partial('content', 'partials/content');      
    $this->template->set_partial('footer', 'partials/footer');
    $this->template->build('/cpanel/index');
}

型号:

/**
 * Get menu categories
 *
 * @param   none
 * @param   none
 * @return  object
 */
function get_menu_categories()
{
    $this->db->select('*');
    $this->db->from('menu_categories');
    $this->db->where('status_id', '1');
    $this->db->order_by('sort_order', 'desc'); 

    $query = $this->db->get();

    return $query->result_array();
}   

查看

<div class="menu">
        <ul class="clear">
            <?php
            foreach ($rows as $row)
            {
                echo '<li>'.anchor($row['category_name'], $row['category_name']).'</li>';
            }
            ?>                
        </ul>
    </div>

1 个答案:

答案 0 :(得分:2)

get_menu_categories()的最后一行更改为return $query->result_array();$row变量此处不会影响返回值或执行函数范围之外的任何操作。

假设$this->template->set()将关联数组作为第二个参数(可能是这种情况),请将其更改为:

$menu_data['rows'] = $this->Dashboard->get_menu_categories();
//          ^^^^ This is your variable name to be used in the view
$this->template->set('menu_categories', $menu_data);

然后,您应该可以从$rows视图访问menu_categories

如评论中所述,将$rows s 一起使用:

foreach ($rows as $row)
{
   echo '<li>'.anchor($row['linkURL'], $row['category_name']).'</li>';
}