Yii2框架(三)控制器及视图操作

简介: 首先,我们先将html页面的公共头尾抽成公共的文件。Yii2.0框架是有公共布局选项这个设置的:advanced/backend/views/layouts/main.php这个文件就是公共模板文件,在我这里就是公共头尾。

QQ图片20220425211331.jpg

今天这部分内容可能比较杂,需要仔细一点。


使用YII2.0框架搭建一个后台管理系统。有登录功能的。当然,这个登录功能先不做,这个留到之后cookie和session操作的时候,再看。


后台管理系统,放到网站根目录下的backend目录中。


我这里使用的adminlte模板,功能挺强大的,有兴趣可以去看下。


官方网站:adminlte.io/


首先,我们先将html页面的公共头尾抽成公共的文件。


Yii2.0框架是有公共布局选项这个设置的:advanced/backend/views/layouts/main.php这个文件就是公共模板文件,在我这里就是公共头尾。


当然,如果你不喜欢main.php这个名字,这是可以改的,方法如下:


1:一劳永逸的方法:在根目录下的/common/config/main.php中添加:


'layout' => 'index',


2:比较麻烦的办法,在每个控制器(controller)中声明:


public $layout = ‘index’;


但是一般没有这么干的,主要是太麻烦了。


不过这条语句在你有不同需求的时候,比如说,你不同的页面想引入另一种模板布局的时候,你可以用这个语句来指定。


当然,如果你不想载入默认布局的时候,直接传false就可以了,命令如下:


public $layout = false;


还有一个问题就是,我们如何指定我们每个页面私有部分的输出位置呢?

很简单,在公共文件中我们想出书模板的部分,加上:


<?php echo $content;?>


QQ图片20220425211334.jpg


公共文件的问题解决了。


那么我们在/backend/views/下建立对应的目录存放html文件(Yii2.0框架只支持PHP文件,因此在放入框架之前,我们需要将它的文件类型改成PHP)


我们再将整个项目需要的资源文件(css+js+image)放入/backend/web/assets/中

接下来,我们需要在页面中重新引入这些资源文件。


Yii2.0框架为我们提供了一条语句,可以直接访问到入口文件的同级目录。


Yii::$app->request->baseUrl;


这条语句可以直接访问到/backend/web/目录下,比如我们刚刚是将资源文件放至/backend/web/assets/中,那么前端调用资源文件的时候就是。


那么这样的话,理论上我们的前端页面部分就应该是完成了。毕竟都是静态页面,如果配置得当,下载的时候什么样子,现在就是什么样子。


视图层大概就是这样,现在我们来看下控制器层。


控制器层在/backend/controller/目录下。默认的控制器是SiteController控制器

当然,这个破玩意也是能改的,具体修改方法,请参见《Yii2.0框架修改默认控制器及控制器中的默认方法》我这里将它修改成index。


我们通过indexcontroller下的index方法来访问站点首页。


class IndexController extends BaseController
 {
     /**
      * 首页控制器
      */
     public function actionIndex()
     {
         return $this->render('index');
     }/**
  * 驼峰写法外部访问
  */
 public function actionUpdateSession()
 {
 }
 }


路由这里YII2.0框架为我们提供了两种方法:


$this->render();  // 这样输出会载入默认布局。
$this->renderPartial();   //不会载入默认布局(也不会载入框架中载入的其他插件(jquery))
复制代码


目前我们没有特殊需求,一般用不到$this->renderPartial();


不想载入默认布局,你在控制器里边加上


public $layout = false;


就可以了嘛。


这里再重复一下:Yii2.0框架中外部(浏览器url)可以访问的方法名前必须加上action。不然外部是访问不了的。


再有就是关于方法名驼峰写法的外部访问方法:如上面中的第二个方法所示:


actionUpdateSession方法。


index/update-session


当然,我们这里访问index/index就没这么麻烦了,经过我们的修改,直接输入你绑定的域名,就能直接访问了。


如果你做的一切都没有问题,理论上就是可以访问首页了。


有好的建议,请在下方输入你的评论,或者,你在搭建过程中遇到问题,也可以在下方留言,也许我可以帮你解决。


目录
相关文章
|
6月前
|
设计模式 存储 前端开发
MVC(Model-View-Controller)是一种软件设计模式,用于将应用程序的输入逻辑、业务逻辑和用户界面逻辑分离
【6月更文挑战第17天】**MVC模式**是软件设计模式,用于分离输入逻辑、业务逻辑和用户界面。模型处理数据和业务,视图展示数据,控制器协调两者响应用户请求。优点包括:关注点分离、提高开发效率、简化测试、支持多视图及便于大型项目管理。
54 3
|
3月前
|
PHP
ThinkPHP6的控制器定义及控制器初使用
本文介绍了ThinkPHP6框架中控制器的定义和初步使用方法。内容包括控制器的文件位置、命名规范、如何改变控制器目录名、单应用模式下的项目访问路径,以及控制器类文件的实际位置和访问URL的示例。文章还提到了ThinkPHP的控制器类可以灵活定义,无需继承任何基础类库,但建议继承一个基础的控制器类以方便扩展。控制器名不区分大小写,并且支持驼峰命名转下划线的方式。
ThinkPHP6的控制器定义及控制器初使用
|
7月前
|
设计模式 存储 前端开发
MVC(模型-视图-控制器)是一种在Web应用程序开发中广泛使用的软件设计模式
【5月更文挑战第12天】MVC模式是Web应用开发中的常见设计模式,将逻辑、数据和界面分离,提升代码可维护性和重用性。模型处理数据逻辑,视图展示数据,控制器协调用户输入与模型视图交互。优点包括代码分离、易维护、可扩展和组件重用,促进高效灵活的开发。
60 2
|
7月前
|
存储 设计模式 前端开发
请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
【2月更文挑战第26天】【2月更文挑战第89篇】请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
52 0
|
12月前
|
存储 前端开发 架构师
自定义MVC实现 很详细(下)---优化版
自定义MVC实现 很详细(下)---优化版
Yii2.0如何创建一个控制器?底层原理是什么?
Yii2.0如何创建一个控制器?底层原理是什么?
Yii2.0的默认控制器是什么?底层原理是什么?
Yii2.0的默认控制器是什么?底层原理是什么?
|
前端开发 JavaScript PHP
Yii2的视图是什么?底层原理是什么?
Yii2的视图是什么?底层原理是什么?
|
缓存 安全 JavaScript
Yii2.0的视图渲染机制是怎样的?底层原理是什么?
Yii2.0的视图渲染机制是怎样的?底层原理是什么?
Yii2.0如何创建一个视图?底层原理是什么?
Yii2.0如何创建一个视图?底层原理是什么?
105 0