首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.1 PHP语言发展历史及其适合的应用领域
1.2 什么是框架
1.3 为什么要用框架开发
1.4 自定义框架
1.4.1 MVC框架模式的实现
1.4.2 入口文件
1.4.3 应用(前端控制器)
1.4.4 从自定义框架到Yii2框架
2.1 Yii简介
2.1.1 什么是Yii框架技术
2.1.2 Yii2的优点
2.1.3 应用案例
2.2 下载Yii2
2.3 运行应用
2.4 输出“Hello World”
2.5 入口文件
2.6 应用主体
2.7 MVC框架模式
2.8 Yii2框架中的控制器
2.9 Yii2框架中的视图
2.10 项目实现迭代一:渲染首页、列表页和内容页视图
3.1 布局概述
3.2 项目实现迭代二:创建并使用布局渲染首页视图
3.3 Controller类的render()方法执行流程
3.4 应用级布局
3.5 嵌套布局
3.6 项目实现迭代三:使用嵌套布局渲染“新闻中心”列表页
3.7 视图文件的存储路径
4.1 模块概述
4.2 使用Gii创建模块
4.3 模块中的资源文件
4.4 项目实现迭代四:文章管理
5.1 ActiveRecord模型概述
5.2 通过CRUD(增查改删)操作理解ActiveRecord类
5.2.1 文章表(ds_article)
5.2.2 在配置文件中初始化数据库连接
5.2.3 创建ActiveRecord模型
5.2.4 通过查询操作理解ActiveRecord类
5.2.5 通过插入和更新操作理解ActiveRecord类
5.2.6 通过删除操作理解ActiveRecord类
5.3 项目实现迭代五:首页“行业百科”数据查询
5.4 项目实现迭代六:在“文章添加”页面实现数据插入
6.1 ActiveRecord模型类的find()方法与查询执行流程
6.2 查询方法find()实例
6.2.1 实现带有逻辑运算符和比较运算符的查询
6.2.2 实现范围比较查询
6.2.3 实现模糊查询
6.3 查询构建类ActiveQuery
6.3.1 ActiveQuery成员属性简介
6.3.2 ActiveQuery成员方法简介
6.3.3 Query类where()成员方法简介
6.4 关联查询
6.5 项目实现迭代七:完成首页中的数据填充
6.5.1 实现幻灯片切换
6.5.2 实现成功案例
6.5.3 实现其他栏目的文章内容查询
当前位置:
首页>>
技术小册>>
Yii2框架从入门到精通(上)
小册名称:Yii2框架从入门到精通(上)
### 6.5 项目实现迭代七:完成首页中的数据填充 在Yii2框架的应用开发中,首页的数据填充是提升用户体验、展示网站核心功能的重要环节。本章节将详细介绍如何在Yii2项目中实现首页的数据填充,包括数据源的选择、数据模型的构建、控制器的数据处理逻辑以及视图的渲染过程。通过这一迭代,我们将使首页内容丰富、动态,从而吸引并留住用户。 #### 6.5.1 确定数据源 在填充首页数据之前,首先需要明确数据从哪里来。常见的数据源包括数据库、API接口、静态文件等。在本例中,我们假设首页需要展示的内容包括:最新文章列表、热门文章推荐、以及网站的一些基础统计数据(如访问量、用户量等)。 - **数据库**:用于存储文章、用户信息、访问统计等动态数据。 - **缓存**:对于访问频繁但更新不频繁的数据(如热门文章),可以考虑使用缓存技术来提高数据访问速度。 #### 6.5.2 构建数据模型 数据模型是MVC(Model-View-Controller)架构中的核心部分,负责数据的逻辑处理。根据前面确定的数据源,我们需要构建相应的数据模型。 ##### 6.5.2.1 文章模型(Article) 创建一个`Article`模型来表示文章数据。假设数据库中有一个`articles`表,包含字段如`id`、`title`、`content`、`publish_time`等。 ```php namespace app\models; use Yii; use yii\db\ActiveRecord; class Article extends ActiveRecord { /** * {@inheritdoc} */ public static function tableName() { return '{{%articles}}'; } // ... 其他方法,如获取最新文章、热门文章等 public static function getLatestArticles($limit = 5) { return self::find()->orderBy(['publish_time' => SORT_DESC])->limit($limit)->all(); } public static function getHotArticles($limit = 5) { // 假设热门基于浏览量或点赞数,具体逻辑根据实际业务需求实现 // 这里仅作为示例,直接使用ID逆序(假设新发布的更可能热门) return self::find()->orderBy(['id' => SORT_DESC])->limit($limit)->all(); } } ``` ##### 6.5.2.2 统计模型(Stats) 创建一个`Stats`模型用于处理网站统计数据的读取。这些数据可能存储在数据库的`stats`表中,也可能通过其他方式获取(如缓存)。 ```php namespace app\models; class Stats { // 假设这是从数据库或缓存中读取的数据 public static function getStats() { // 实际项目中,这里可能是查询数据库或缓存 return [ 'visitorCount' => 123456, 'userCount' => 65432, // 其他统计数据... ]; } } ``` #### 6.5.3 控制器处理 在控制器中,我们将负责调用数据模型,获取数据,并传递给视图进行渲染。 ```php namespace app\controllers; use Yii; use yii\web\Controller; use app\models\Article; use app\models\Stats; class SiteController extends Controller { public function actionIndex() { // 获取最新文章和热门文章 $latestArticles = Article::getLatestArticles(); $hotArticles = Article::getHotArticles(); // 获取网站统计数据 $stats = Stats::getStats(); // 将数据传递给视图 return $this->render('index', [ 'latestArticles' => $latestArticles, 'hotArticles' => $hotArticles, 'stats' => $stats, ]); } } ``` #### 6.5.4 视图渲染 最后,在视图中,我们将使用从控制器传递过来的数据来构建和渲染首页的内容。 ```php <!-- 视图文件路径:views/site/index.php --> <div class="site-index"> <div class="jumbotron"> <h1>Welcome to Our Website!</h1> <p class="lead">Discover the latest articles and trending topics.</p> <!-- 显示统计数据 --> <p>Total Visitors: <?= $stats['visitorCount'] ?></p> <p>Total Users: <?= $stats['userCount'] ?></p> </div> <div class="body-content"> <div class="row"> <div class="col-lg-8"> <h2>Latest Articles</h2> <!-- 渲染最新文章列表 --> <ul> <?php foreach ($latestArticles as $article): ?> <li><a href="<?= Yii::$app->urlManager->createUrl(['article/view', 'id' => $article->id]) ?>"><?= htmlspecialchars($article->title) ?></a></li> <?php endforeach; ?> </ul> </div> <div class="col-lg-4"> <h2>Hot Articles</h2> <!-- 渲染热门文章列表 --> <ul> <?php foreach ($hotArticles as $article): ?> <li><a href="<?= Yii::$app->urlManager->createUrl(['article/view', 'id' => $article->id]) ?>"><?= htmlspecialchars($article->title) ?></a></li> <?php endforeach; ?> </ul> </div> </div> </div> </div> ``` #### 6.5.5 性能优化与考虑 在实现首页数据填充的过程中,还需考虑以下几点以优化性能和用户体验: - **数据缓存**:对于访问量大但更新不频繁的数据(如热门文章、统计数据),使用缓存技术可以显著减少数据库查询次数,提高响应速度。 - **分页与懒加载**:如果数据量非常大,考虑在首页使用分页或懒加载技术,以减轻初次加载时的服务器压力。 - **前端优化**:优化HTML结构、CSS样式和JavaScript脚本,减少页面加载时间,提升用户体验。 - **SEO优化**:合理设置HTML的标题、元描述和关键词,利用SEO友好型URL,提高网站在搜索引擎中的排名。 通过以上步骤,我们不仅完成了首页的数据填充,还对整个实现过程进行了性能优化和用户体验的考虑,使得整个网站更加健壮、高效、易于维护。
上一篇:
6.4 关联查询
下一篇:
6.5.1 实现幻灯片切换
该分类下的相关小册推荐:
Magento零基础到架构师(目录管理)
Laravel(10.x)从入门到精通(十三)
PHP8入门与项目实战(2)
Magento零基础到架构师(产品管理)
Laravel(10.x)从入门到精通(十七)
Laravel(10.x)从入门到精通(四)
PHP高并发秒杀入门与实战
PHP8入门与项目实战(8)
PHP8入门与项目实战(3)
PHP程序员面试算法宝典
PHP8实战小册
PHP高性能框架-Swoole