私はいくつかのコントローラメソッドで、メソッド間で1つまたは2つの条件が変化するだけで結果をページ付けする必要があることを見出しています。私はまた、時々改ページしないという選択肢が必要でした。完全なプログラミングnewbとして、私はDRYを練習したいので、コントローラーをコーディングする前にページングの可能性をモデル化する方法を学ぶことに慣れました。私はthis Stack Overflow questionの答えに基づいて私のモデルで私のクエリを構築し始めました。残念ながら、質問をした人にはコードの最初の部分が含まれていなかったので、モデルクエリの最初の部分がどのように見えるかは本当に迷っています。以下のコードを使用すると、モデルに2つの不正なオフセットタイプエラーが発生します。私は個人的にあなたがこれをやろうとしている方法で、多くのオーバーヘッドがあると思い私のモデルをcakephpの結果にページ区切りを設定する
<?php
class LodgingsController extends AppController {
public $name='Lodgings';
public $layout='pagelayout';
public $uses=array('User', 'Unit', 'Location');
public $helpers=array('Text','Html','Js','GoogleMapV3');
public $paginate=array();
public function debug() {
$qOptions=array('conditions'=>array('Unit.active'=>1, 'Unit.type'=>'condo'), 'limit'=>9, 'order'=>array('Unit.id'=>'asc'));
$opts['paginate'] = true;
$paginateOptions=$this->Unit->getListings($opts);
$this->paginate=$paginateOptions;
$stuff=$this->paginate('Unit');
$this->set('units', $stuff);
}
}
?>
ありがとうございます。私はそれを自分のやり方で行う方が簡単だと思っていましたが、あなたのアドバイスを信頼して、あなたのスタックオーバーフローポイントから判断してください!実際には、各コントローラーメソッドから実行すると、ifステートメントを実行する必要はありません。各メソッドでページを設定するかどうかはわかります。だから私は私が行ったような私のコントローラーの方法を続けていると思います。なぜ私がやろうとしていたことがオーバーヘッドになっているのか、少しは説明できますか? – huzzah
関数ごとに複数のことをしようとすると、コードが複雑になります。モデル関数は、渡した情報に基づいて2つのことをしようとしていました。それをやりたければ、実際にそれらを2つの関数に分割する必要があります。例えば、それらの名前を 'getAllListings'と' getPaginatedListings'とすることができます。名前だけに基づいて、それぞれの機能が何をしているのか、そしてあなたが返すデータは非常に明確です。しかし、おそらく複数のことをする機能を持たせるだけで、コードが不必要に複雑になってしまうのです。私の意見では。シンプルで清潔に保つことが私のモットーです。 –
誰かが以前私がやっていたこととは反対の「太ったモデル/皮肉なコントローラー」を保つように私にアドバイスしました。なぜなら、Cakeのマニュアルはコントローラーのすべてをやっているからです。私の機能を正しく語ります。その洞察をいただきありがとうございます。私はあなたのようなより多くのメンターのタイプに就きたいと思っています! – huzzah