我正在制作一个CakePHP 2.x应用程序,并按照网站上的说明安装了datatables.js,但是虽然有一些功能不起作用。我无法更改要显示的条目数量,搜索功能总是不返回任何内容,也不会将数据拆分为多个页面(例如,如果我将其设置为每页显示10个条目,它仍将全部显示在一页上,即使它超过10)。
唯一有效的部分是排序功能和视觉方面。
这是我在以下位置实现数据表的视图:
<div class="products index">
<h2><?php echo __('Products'); ?></h2>
<table cellpadding="0" cellspacing="0" id="prod-tbl">
<thead>
<head>
<!--<script src="jquery-1.11.1.min.js"></script>-->
<!-- DataTables CSS -->
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.3/css/jquery.dataTables.css">
<!-- jQuery -->
<script type="text/javascript" charset="utf8" src="//code.jquery.com/jquery-1.10.2.min.js"></script>
<!-- DataTables -->
<script type="text/javascript" charset="utf8" src="//cdn.datatables.net/1.10.3/js/jquery.dataTables.js"></script>
<script >$(document).ready( function () {$('#prod-tbl').DataTable();} );</script>
</head>
<tr>
<th><?php echo $this->Paginator->sort('name'); ?></th>
<th><?php echo $this->Paginator->sort('product_code'); ?></th>
<th><?php echo $this->Paginator->sort('image_name'); ?></th>
<th><?php echo $this->Paginator->sort('image_url'); ?></th>
<!--<th><?php echo $this->Paginator->sort('brand_id'); ?></th>
<th><?php echo $this->Paginator->sort('reward_id'); ?></th>-->
<th><?php echo $this->Paginator->sort('product_status_id'); ?></th>
<th><?php echo $this->Paginator->sort('serial_id'); ?></th>
<th><?php echo $this->Paginator->sort('category_id'); ?></th>
<th class="actions"><?php echo __('Actions'); ?></th>
</tr>
</thead>
<?php foreach ($products as $product): ?>
<tbody>
<tr>
<td><?php echo h($product['Product']['name']); ?> </td>
<td><?php echo h($product['Product']['product_code']); ?> </td>
<td><?php echo h($product['Product']['image_name']); ?> </td>
<td><?php echo h($product['Product']['image_url']); ?> </td>
<!--<td><?php echo h($product['Product']['brand_id']); ?> </td>
<td><?php echo h($product['Product']['reward_id']); ?> </td>-->
<td><?php echo h($product['Product']['product_status_id']); ?> </td>
<td><?php echo h($product['Product']['serial_id']); ?> </td>
<td><?php echo h($product['Product']['category_id']); ?> </td>
<td class="actions">
<?php echo $this->Html->link(__('View'), array('action' => 'view', $product['Product']['id'])); ?>
<?php echo $this->Html->link(__('Edit'), array('action' => 'edit', $product['Product']['id'])); ?>
<?php echo $this->Form->postLink(__('Delete'), array('action' => 'delete', $product['Product']['id']), null, __('Are you sure you want to delete # %s?', $product['Product']['id'])); ?>
</td>
</tr>
</tbody>
<?php endforeach; ?>
</table>
<p>
<?php
echo $this->Paginator->counter(array(
'format' => __('Page {:page} of {:pages}, showing {:current} records out of {:count} total, starting on record {:start}, ending on {:end}')
));
?> </p>
<div class="paging">
<?php
echo $this->Paginator->prev('< ' . __('previous'), array(), null, array('class' => 'prev disabled'));
echo $this->Paginator->numbers(array('separator' => ''));
echo $this->Paginator->next(__('next') . ' >', array(), null, array('class' => 'next disabled'));
?>
</div>
</div>
<div class="actions">
<h3><?php echo __('Actions'); ?></h3>
<ul>
<li><?php echo $this->Html->link(__('New Product'), array('action' => 'add')); ?></li>
</ul>
</div>
答案 0 :(得分:1)
我猜你试图在CakePHP分页页面中包含datatable.js。
datatable.js和CakePHP Paginator都是两种不同的方法来过滤掉数据。 Cake Paginator在服务器中执行所有类型的过滤,并仅在表中显示结果数据。 Datatable.js在客户端(javascript)中工作。
当您在分页表上应用datatable.js时,它将仅过滤结果数据,而不是整个数据。
您可以使用以下任何一种方法