Codeigniter: Как добавить href-ссылки к курируемым результатам нумерации страниц - PullRequest
0 голосов
/ 03 апреля 2011

Я выполнил нумерацию страниц с помощью CodeIgniter, и он отображает результаты из моей базы данных как: название, контент, цена и пост. Мне было интересно, как сделать так, чтобы контент (заголовок, контент, цена) отображался как ссылки (

function index() 
    {
            $this->load->library('pagination');
            $this->load->library('table');

            $this->table->set_heading('postid', 'The Title', 'The Content', 'Price');

            $config['base_url'] = 'http://localhost/ganbaru/index.php/site/index';
            $config['total_rows'] = $this->db->get('posts')->num_rows();
            $config['per_page'] = 10;
            $config['num_links'] = 20;
            $config['full_tag_open'] = '<div id="pagination">';
            $config['full_tag_close'] = '</div>';

            $this->pagination->initialize($config);

            $posts['records'] = $this->db->get('posts', $config['per_page'], $this->uri->segment(3));

            $this->load->view('site_view', $posts);
    }

Вот код вида

</head>
<body>  


<div id="container">
                    <h1>Super Pagination with CodeIgniter</h1>
                    <?php echo $this->table->generate($records); ?>
                    <?php echo $this->pagination->create_links(); ?>
            </div>
</body>
</html>

Ответы [ 2 ]

3 голосов
/ 03 апреля 2011

Обновление извините, не совсем понял

Я не использовал библиотеку таблиц, но вы можете создать цикл и просто выводить ссылки, используя что-то вроде:

В контроллере:

$query = $this->db->get('posts', $config['per_page'], $this->uri->segment(3));
$posts["records"] = $query->result_array();

В файле просмотра:

</head>
<body>  
<div id="container">
<h1>Super Pagination with CodeIgniter</h1>
<table>
<?php foreach($records as $record) { ?>
<tr>
<td><a href="<?php echo site_url('myuri/' . $record["id"]); ?>"><?php echo $record["id"]; ?></a></td>
<td><a href="<?php echo site_url('myuri/' . $record["id"]); ?>"><?php echo $record["title"]; ?></a></td>
<td><a href="<?php echo site_url('myuri/' . $record["id"]); ?>"><?php echo $record["content"]; ?></a></td>
</tr>
<?php } ?>
</table>
<?php echo $this->pagination->create_links(); ?>
</div>
</body>
</html>

Я не проверял это, и он немного уродлив, чем ваш оригинальный код, но даст вам более прямой контроль. >

Если я вас правильно понимаю

Я не вижу, где вы либо echo, либо не сохраняете результаты $this->pagination->create_links();, это то, что производит вывод разбиения на страницы из библиотеки и то, что вам нужно будет отобразить, чтобы показать ссылки. Но, как вы указали, вы не знаете, как окружить вывод тегами. Я попробовал пример из руководства пользователя:

$this->load->library('pagination');

$config['base_url'] = 'http://example.com/index.php/test/page/';
$config['total_rows'] = '200';
$config['per_page'] = '20'; 

$this->pagination->initialize($config); 

echo $this->pagination->create_links();

и получилось:

<strong>1</strong>
<a href="http://example.com/index.php/test/page/20">2</a>
<a href="http://example.com/index.php/test/page/40">3</a>
<a href="http://example.com/index.php/test/page/20">&gt;</a>
<a href="http://example.com/index.php/test/page/180">Last &rsaquo;</a>

который имеет теги. Так что вам следует взглянуть на пример в руководстве пользователя и, возможно, сохранить вывод в виде пагинации как переменную под posts, чтобы вы могли отобразить его на странице. Например, $posts["pagination"] = $this->pagination->create_links();, а затем отобразить его на странице, используя echo $pagination.

Документация находится по адресу - http://codeigniter.com/user_guide/libraries/pagination.html - так что вы можете быстро прочитать все опции.

Надеюсь, это поможет ...

0 голосов
/ 03 апреля 2011

Класс таблицы CI весьма ограничен в своих возможностях.

Вы можете достичь желаемого:

$table_heading = array(
                       '<a href="some_link">Title</a>', 
                       '<a href="some_link/foo">Price</a>');

$this->table->set_heading($table_heading);

Что даст вам прямой контроль над тем, что находится в строке заголовков. Это не проверено, но должно работать.

Другой вариант, предложенный Иоганном, - создать таблицу вручную, что, конечно, даст вам 100% контроль над выводом.

...