diff --git a/lib/Cake/Test/Case/View/Helper/PaginatorHelperTest.php b/lib/Cake/Test/Case/View/Helper/PaginatorHelperTest.php index cfbd558db09..83b2ddcd150 100644 --- a/lib/Cake/Test/Case/View/Helper/PaginatorHelperTest.php +++ b/lib/Cake/Test/Case/View/Helper/PaginatorHelperTest.php @@ -53,6 +53,8 @@ public function setUp() { 'prevPage' => false, 'nextPage' => true, 'pageCount' => 7, + 'order' => null, + 'limit' => 20, 'options' => array( 'page' => 1, 'conditions' => array() @@ -369,6 +371,21 @@ public function testSortKey() { $this->assertEquals($result, 'Article'); } +/** + * Test that sortKey falls back to the default sorting options set + * in the $params which are the default pagination options. + * + * @return void + */ + public function testSortKeyFallbackToParams() { + $this->Paginator->request->params['paging']['Article']['order'] = 'Article.body'; + $result = $this->Paginator->sortKey(); + $this->assertEquals('Article.body', $result); + + $result = $this->Paginator->sortKey('Article'); + $this->assertEquals('Article.body', $result); + } + /** * testSortDir method * diff --git a/lib/Cake/View/Helper/PaginatorHelper.php b/lib/Cake/View/Helper/PaginatorHelper.php index ad72a0fe38a..4128c77df8c 100644 --- a/lib/Cake/View/Helper/PaginatorHelper.php +++ b/lib/Cake/View/Helper/PaginatorHelper.php @@ -199,13 +199,14 @@ public function sortKey($model = null, $options = array()) { $params = $this->params($model); $options = $params['options']; } - if (isset($options['sort']) && !empty($options['sort'])) { return $options['sort']; - } elseif (isset($options['order']) && is_array($options['order'])) { - return key($options['order']); - } elseif (isset($options['order']) && is_string($options['order'])) { - return $options['order']; + } + if (isset($options['order'])) { + return is_array($options['order']) ? key($options['order']) : $options['order']; + } + if (isset($params['order'])) { + return is_array($params['order']) ? key($params['order']) : $params['order']; } return null; }