yiiページングチュートリアル
6713 ワード
次の会社用のフレームワークはyiiです.ここ数日、関連するチュートリアルを見て、今日はページングチュートリアルを書いて、最後にtpのページングもyiiに統合しました.個人的にはyiiのページングにはtp用の使い勝手がないと思っていますから.
トップページでは、modelsディレクトリにAuthを作成します.phpのモデルファイル、中に書き込みます
次にcontrollersディレクトリにIndexControllerを作成する.phpの制御ファイル、中に書き込みます
ここでactionListとactionList 1は$criteriaの2つの書き方である
最後にviewsディレクトリにindexディレクトリを追加し、indexディレクトリにauthを追加する.phpファイル、中に書き込み
上はyiiが持参した書き方で、ここでtpのページングクラスを導入して、簡単な変更をして、手順は以下の通りです.
まず、tpのAjaxPage.class.phpとPage.class.phpはyiiのプロジェクトディレクトリの下のprotected/componentsの下に移動し、ファイル名の分布をAjaxPageに変更する.phpとPage.php、それぞれ2つのファイルに入って、中のCの方法を取り除いて、つまりこの1つです
変更が完了すると、yiiは起動時に自動的にロードされるため、この2つのファイルを導入する必要はありません.具体的にはprotected/config.php/main.phpの構成における
次にprotected/config.php/ディレクトリにcommonを新規作成します.phpファイル、このファイルはいくつかのプロジェクトの公共関数を置いて、tpに詳しい友达はtpにも公共関数ファイルがあることを知っているはずで、とても使いやすくて、ここで参考にして、yiiもあるでしょう、今のところまだ発見していません.ファイルへの書き込み
このファイルはもうすぐ導入されます.そうしないとロードできません.プロジェクトのエントリファイルindexでいいです.phpに独自に導入され、コードは以下の通りです.
最後にindexController.phpでページ化された場所でこのメソッドを呼び出す
このメソッドをカプセル化し、後でページングを呼び出すときに、いくつかのパラメータを渡すだけで、簡単で迅速です.pageでphpページで呼び出す
同時にfindAllを利用してページングのクエリー効果を実現することもでき、コードは以下の通りである.
ci、tpの2つのフレームワークを経験した後、yiiの進度がずっと速いことを見ます.あるフレームワークを把握することは、mvcの使用規則を把握することにほかならないと思います.model層でデータベースメソッドを呼び出してデータを取得し、controller層でmodel層データを呼び出して論理処理を行い、view層に伝えます.同時にフレームワークのテンプレート操作、フォーム操作、ページング操作、ファイルアップロード操作、cookieとsession操作、url呼び出しを理解します.常用操作を理解してから、ソースコードを見て、フレームワークの違いと共通性を比較してまとめ、自分の技術を昇華させ、後で常用開発は言うまでもなく、大きな給料をもらうのもそうです.
トップページでは、modelsディレクトリにAuthを作成します.phpのモデルファイル、中に書き込みます
class Auth extends CActiveRecord {
public static function model($className = __CLASS__) {
return parent::model($className);
}
public function tableName() {
return '{{auth}}';
}
}
次にcontrollersディレクトリにIndexControllerを作成する.phpの制御ファイル、中に書き込みます
class IndexController extends Controller {
public function actionList() {
$criteria = new CDbCriteria();
$criteria->order = 'a_id desc';
$count = Auth::model()->count($criteria);
$page = new CPagination($count);
$page->pageSize = 10;
$page->applyLimit($criteria);
$auth = Auth::model()->findAll($criteria);
$this->renderPartial('auth', array('page' => $page, 'list' => $auth));
}
public function actionList1() {
$p = isset($_GET['page']) ? $_GET['page'] : 0;
$criteria = new CDbCriteria();
$criteria->select = "a_id,a_nickname";
$criteria->condition='';
$criteria->limit = 10;
$criteria->offset = $p == 0 ? 0 : (($p-1)*10);
$criteria->order = 'a_id desc';
$auth = Auth::model()->findAll($criteria);
$count = Auth::model()->count($criteria);
$page = new CPagination($count);
$page->pageSize = 10;
$page->applyLimit($criteria);
$this->renderPartial('auth', array('page' => $page, 'list' => $auth));
}
}
ここでactionListとactionList 1は$criteriaの2つの書き方である
最後にviewsディレクトリにindexディレクトリを追加し、indexディレクトリにauthを追加する.phpファイル、中に書き込み
widget('CLinkPager',array(
'firstPageLabel'=>' ',
'lastPageLabel'=>' ',
'prevPageLabel'=>' ',
'nextPageLabel'=>' ',
'pages'=>$page,
'maxButtonCount'=>13,
)
);
?>
上はyiiが持参した書き方で、ここでtpのページングクラスを導入して、簡単な変更をして、手順は以下の通りです.
まず、tpのAjaxPage.class.phpとPage.class.phpはyiiのプロジェクトディレクトリの下のprotected/componentsの下に移動し、ファイル名の分布をAjaxPageに変更する.phpとPage.php、それぞれ2つのファイルに入って、中のCの方法を取り除いて、つまりこの1つです
$this->varPage = C('VAR_PAGE') ? C('VAR_PAGE') : 'p' ;
$this->varPage = 'p' ;
変更が完了すると、yiiは起動時に自動的にロードされるため、この2つのファイルを導入する必要はありません.具体的にはprotected/config.php/main.phpの構成における
// autoloading model and component classes
'import'=>array(
'application.models.*',
'application.components.*',
),
次にprotected/config.php/ディレクトリにcommonを新規作成します.phpファイル、このファイルはいくつかのプロジェクトの公共関数を置いて、tpに詳しい友达はtpにも公共関数ファイルがあることを知っているはずで、とても使いやすくて、ここで参考にして、yiiもあるでしょう、今のところまだ発見していません.ファイルへの書き込み
//
function getListByPage($model, $select = '*', $condition = '', $limit = 10, $order = '', $p = '', $ajax = 0) {
//
$_GET['p'] = isset($_GET['p']) ? intval($_GET['p']) : 1;
$limit = intval($limit) > 0 ? intval($limit) : 10;
if ($p) {
$_GET['p'] = intval($p) ? intval($p) : 1;
}
$criteria = new CDbCriteria();
$count = $model->count($criteria);
if ($ajax) {
$Page = new AjaxPage($count, $limit);
} else {
$Page = new Page($count, $limit);
}
$result['page'] = trim($Page->show());
$criteria->select = $select;
$criteria->condition = $condition;
$criteria->limit = $Page->listRows;
$criteria->offset = $Page->firstRow;
$criteria->order = $order;
$list = $model->findAll($criteria);
$result['list'] = $list;
return $result;
}
このファイルはもうすぐ導入されます.そうしないとロードできません.プロジェクトのエントリファイルindexでいいです.phpに独自に導入され、コードは以下の通りです.
require_once(dirname($config) . '/common.php');
最後にindexController.phpでページ化された場所でこのメソッドを呼び出す
public function actionPage() {
$model = Auth::model();
$info = getListByPage($model);
$this->renderPartial('page', array('info' => $info));
}
このメソッドをカプセル化し、後でページングを呼び出すときに、いくつかのパラメータを渡すだけで、簡単で迅速です.pageでphpページで呼び出す
同時にfindAllを利用してページングのクエリー効果を実現することもでき、コードは以下の通りである.
function getListByPage($model, $select = '*', $condition = '', $limit = 10, $order = '', $p = '', $ajax = 0) {
if (!$model) {
return array();;
}
//
$_GET['p'] = isset($_GET['p']) ? intval($_GET['p']) : 1;
$limit = intval($limit) > 0 ? intval($limit) : 10;
if ($p) {
$_GET['p'] = intval($p) ? intval($p) : 1;
}
$count = $model->count();
if ($ajax) {
$Page = new AjaxPage($count, $limit);
} else {
$Page = new Page($count, $limit);
}
$result['page'] = trim($Page->show());
$result['list'] = $model->findAll(array(
'select' => $select,
'condition' => $condition,
'order' => $order,
'limit' => $Page->listRows,
'offset' => $Page->firstRow,
));
return $result;
}
ci、tpの2つのフレームワークを経験した後、yiiの進度がずっと速いことを見ます.あるフレームワークを把握することは、mvcの使用規則を把握することにほかならないと思います.model層でデータベースメソッドを呼び出してデータを取得し、controller層でmodel層データを呼び出して論理処理を行い、view層に伝えます.同時にフレームワークのテンプレート操作、フォーム操作、ページング操作、ファイルアップロード操作、cookieとsession操作、url呼び出しを理解します.常用操作を理解してから、ソースコードを見て、フレームワークの違いと共通性を比較してまとめ、自分の技術を昇華させ、後で常用開発は言うまでもなく、大きな給料をもらうのもそうです.