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

528 阅读2分钟

这是我参与11月更文挑战的第19天,活动详情查看:2021最后一次更文挑战

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

使用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;?>

在这里插入图片描述

公共文件的问题解决了。

那么我们在/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就没这么麻烦了,经过我们的修改,直接输入你绑定的域名,就能直接访问了。

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

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

欢迎访问个人博客 guanchao.site

欢迎访问小程序:

在这里插入图片描述