【发布时间】:2015-12-15 19:51:10
【问题描述】:
我正在尝试在 <option> HTML 标记内使用 CakePHP 3 分页器排序,但这会在 value 属性中输出一个链接,如下所示:
<option> 里面有分页符 value 属性:
<select name="products-order" class="form-control products-order inline-pagination-menu" onchange="redirect(this)">
<option value="<?= $this->Paginator->sort('product_name') ?>">A - Z</option>
<option value="<?= $this->Paginator->sort('product_name', null, ['direction' => 'desc']) ?>">Z - A</option>
<option value="<?= $this->Paginator->sort('price') ?>">Menor preço</option>
<option value="<?= $this->Paginator->sort('price', null, ['direction' => 'desc']) ?>">Maior preço</option>
</select>
输出
<select name="products-order" class="form-control products-order inline-pagination-menu" onchange="redirect(this)">
<option value="<a href="/posts/index?page=1&sort=user_id&direction=asc">User Id</a>">A - Z</option>
</select>
我尝试更改模板,但没有成功(抛出:在$this->Paginator->templates 中调用未定义的方法)我在下面尝试:
将其付诸实施(在 clontroller 中的方法):
public $helpers = [
'Paginator' => ['templates' => 'paginator-templates']
];
并更改模板:
$this->Paginator->templates([
'sort' => '{{url}}'
]);
对完整代码进行分页
$this->paginate = [
'conditions' => ['product_name LIKE' => '%' . $search . '%'],
'maxLimit' => 10,
'contain' => ['Medias' => function($q){
return $q->select(['path', 'product_id'])
->where(['media_type_id' => 3]);
}]
];
$this->Paginator->templates([
'sort' => '{{url}}'
]);
$products = $this->paginate($this->Products);
错误:
2015-12-14 15:31:47 Error: Fatal Error (1): Call to undefined method Cake\Controller\Component\PaginatorComponent::templates() in [C:\xampp\htdocs\PROJETOS\Shopping\src\Controller\ProductsController.php, line 121]
Trace:
Cake\Error\BaseErrorHandler::handleFatalError() - CORE\src\Error\BaseErrorHandler.php, line 192
Cake\Error\BaseErrorHandler::Cake\Error\{closure}() - CORE\src\Error\BaseErrorHandler.php, line 91
[main] - [internal], line ??
2015-12-14 15:31:47 Error: [Cake\Error\FatalErrorException] Call to undefined method Cake\Controller\Component\PaginatorComponent::templates()
Request URL: /products/search?search=a
Stack Trace:
#0 C:\xampp\htdocs\PROJETOS\Shopping\vendor\cakephp\cakephp\src\Error\BaseErrorHandler.php(91): Cake\Error\BaseErrorHandler->handleFatalError(1, 'Call to undefin...', 'C:\\xampp\\htdocs...', 121)
#1 [internal function]: Cake\Error\BaseErrorHandler->Cake\Error\{closure}()
#2 {main}
【问题讨论】:
-
收到错误时,请始终发布 complete、exact 错误消息,并包含相应的堆栈跟踪(最好来自日志,它在哪里格式正确)!另外你应该提到你在这里如何放置代码的位置,第一个 sn-p 在控制器中,第二个?
-
@ndm 我从日志中输入了分页器代码和错误
标签: cakephp cakephp-3.0