利用yii做分页,其中有分装好的分页,按照我的步骤来,利用它的封装做分页非常简单。
话不多说,看步骤:
配置数据库
在框架中配置好你的数据库、用户名、密码
在common/config/main-local.php 中
<?php
return [
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=ten',//数据库mysql 服务器地址:lovalhost 数据库名ten
'username' => '',//用户名
'password' => '',//密码
'charset' => 'utf8',
],
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@common/mail',
// send all mails to a file by default. You have to set
// 'useFileTransport' to false and configure a transport
// for the mailer to send real emails.
'useFileTransport' => true,
],
],
];
创建控制器
两种方式,一种直接用gii生成控制器文件,简单快捷,当然需要注意控制器的名称,控制器的命名空间,然后直接生成就可以了;
第二种,就是自己创建控制器,当然也可以这样做,但我不建议这样,首先既然用yii框架了,就尝试一下用里面的东西,第二比较费时间;
创建一个控制器,写好命名空间,然后在视图层文件夹中创建与控制器相同的文件夹,用来存放视图层文件。即:
<?php
namespace frontend\controllers;//命名空间
use Yii;
use frontend\models\Zhoukao2;//加载model层
use yii\data\Pagination; //加载分页类
class ExaminationController extends \yii\web\Controller
{
public function actionIndex()
{
}
}
创建模型层
模型层对应数据表
也是两种方式,一种直接用gii生成控制器文件,简单快捷,需要注意model的名称,控制器的命名空间,然后直接生成就可以了;
第二种,就是自己创建model文件。
<?php
namespace frontend\models;//命名空间
use Yii;
/**
* This is the model class for table "zhoukao2".
*
* @property integer $id
* @property string $username
* @property string $sex
* @property string $hobby
* @property string $content
*/
class Examination extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()//必须创建这个方法 用来返回表
{
return 'examination';
}
}
实现yii分页
代码如下:
<?php
namespace frontend\controllers;//命名空间
use Yii;
use frontend\models\Zhoukao2;//加载model层
use yii\data\Pagination; //加载分页类
class ExaminationController extends \yii\web\Controller
{
//展示留言添加页面
public function actionIndex()
{
$query = Examination::find();
$countQuery = clone $query;
$pages = new Pagination(['totalCount' => $countQuery->count(),'pageSize'=>2]);
$models = $query->offset($pages->offset)
->limit($pages->limit)
->all();
return $this->render('index', [
'model' => $models,
'pages' => $pages,
]);
}
}
视图层文件
视图文件index.php
<?php
use \yii\widgets\LinkPager;//加载分页类
?>
<h2>留言类表</h2>
<?php
foreach ($model as $v) {
echo "<table border=1 style='margin-top:20px'>";
echo "<tr>";
echo "<td>姓名:".$v['username']."</td>";
echo "<td>性别:".$v['sex']."</td>";
echo "<td>爱好:".$v['hobby']."</td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan='3'>内容:".$v['content']."</td>";
echo "</tr>";
echo "</table>";
}
?>
<?php // 显示分页
echo LinkPager::widget([
'pagination' => $pages,
'class'=>'CLinkPager',
'firstPageLabel'=>'首页',
'lastPageLabel'=>'末页',
'nextPageLabel'=>'下一页',
'prevPageLabel'=>'上一页',
]); ?>
效果图: