アカウント内のユーザーに属する画像のリストを表示するようにページ付けを設定しています。これは私が私のコントローラーに持っているものです:
class UsersController extends AppController {
public $paginate = array(
'limit' => 5,
'order' => array(
'Image.uploaded' => 'DESC'
)
);
// ...
public function images() {
$this->set('title_for_layout', 'Your images');
$albums = $this->Album->find('all', array(
'conditions' => array('Album.user_id' => $this->Auth->user('id'))
));
$this->set('albums', $albums);
// Grab the users images
$options['userID'] = $this->Auth->user('id');
$images = $this->paginate('Image');
$this->set('images', $images);
}
// ...
}
それは機能しますが、このページネーションを実装する前に、Image
モデルにユーザーの画像を取得するためのカスタムメソッドがありました。ここにあります:
public function getImages($options) {
$params = array('conditions' => array());
// Specific user
if (!empty($options['userID'])) {
array_push($params['conditions'], array('Image.user_id' => $options['userID']));
}
// Specific album
if (!empty($options['albumHash'])) {
array_push($params['conditions'], array('Album.hash' => $options['albumHash']));
}
// Order of images
$params['order'] = 'Image.uploaded DESC';
if (!empty($options['order'])) {
$params['order'] = $options['order'];
}
return $this->find('all', $params);
}
getImages()
デフォルトの代わりにこのメソッドを使用できる方法はありますpaginate()
か?ドキュメントで見つけることができる最も近いものは「カスタムクエリページネーション」ですが、私は独自のクエリを書きたくはありませんgetImages()
。メソッドを使用したいだけです。うまくいけば、私はそれを行うことができます。
乾杯。