Создание динамических ссылок через БД и КИ - PullRequest
0 голосов
/ 21 августа 2011

Я пытаюсь взять свой набор результатов и отправить его в представление, чтобы оно могло отображаться соответствующим образом, и у меня возникают проблемы с пониманием документов, найденных здесь. У меня есть представление шаблона того, что я хотел бы как-то отображать как: Это просто дает вам представление. Ниже шаблона или, что не так, код для моего контроллера и модель, которая получает имена категорий из базы данных. Также включено то, что у меня в настоящее время на мой взгляд (синтаксис 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();
}   

View

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

1 Ответ

2 голосов
/ 21 августа 2011

Измените последнюю строку 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>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...