4.9.1 コントローラのセットアップ
The original text for this section has changed since it was translated. Please help resolve this difference. You can:
コントローラにおいてまずすべき事柄は、コントローラ変数 $paginate でページ付けの初期設定値を定義することです。そのとき、必ず並び替えを定義しなければならない点に注意してください。これは「order」をキーにして値を配列で渡すことで行います。
class RecipesController extends AppController {
var $paginate = array(
'limit' => 25,
'order' => array(
'Post.title' => 'asc'
)
);
}
class RecipesController extends AppController {var $paginate = array('limit' => 25,'order' => array('Post.title' => 'asc'));}
fields のような他の find() のオプションも含めることができます。
class RecipesController extends AppController {
var $paginate = array(
'fields' => array('Post.id', 'Post.created'),
'limit' => 25,
'order' => array(
'Post.title' => 'asc'
)
);
}
class RecipesController extends AppController {var $paginate = array('fields' => array('Post.id', 'Post.created'),'limit' => 25,'order' => array('Post.title' => 'asc'));}
$paginate 配列に含まれる他のキーは conditions、fields、order、limit、page、contain そして recursive となり、「Model->find('all')」メソッドのパラメータに似ています。 似ているというより、実は各モデル名をキーにすることで、複数のモデルに対してページ付けの初期設定値を定義できるのです。
class RecipesController extends AppController {
var $paginate = array(
'Recipe' => array (...),
'Author' => array (...)
);
}
class RecipesController extends AppController {var $paginate = array('Recipe' => array (...),'Author' => array (...));}
「Containable」ビヘイビアを使用した構文の例です:
class RecipesController extends AppController {
var $paginate = array(
'limit' => 25,
'contain' => array('Article')
);
}
class RecipesController extends AppController {var $paginate = array('limit' => 25,'contain' => array('Article'));}
$paginate 変数を定義すれば、コントローラのアクションの中で paginate() メソッドを呼び出すことができます。このメソッドはモデルから1ページ分の find() の結果を返し、ページ分けの統計情報を取得し、この統計情報を自動的にビューへ渡します。また、このメソッドは、ヘルパーのリストが PaginatorHelper に追加されていない場合、追加を実行します。
function list_recipes() {
// findAll() に類似したデータを1ページ分取得する
$data = $this->paginate('Recipe');
$this->set('data', $data);
}
function list_recipes() {// findAll() に類似したデータを1ページ分取得する$data = $this->paginate('Recipe');$this->set('data', $data);}
取得するレコードを絞るには、paginate() 関数の第2引数に検索条件を渡します。
$data = $this->paginate('Recipe', array('Recipe.title LIKE' => 'a%'));
$data = $this->paginate('Recipe', array('Recipe.title LIKE' => 'a%'));
$paginate 配列の conditions キーに検索条件を指定します。