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

发布时间:2020-03-21 08:08:46 阅读:13

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

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

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

    我这里使用的adminlte模板,功能挺强大的,有兴趣可以去看下。官方网站:https://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;?>

    1212.png

     

    公共文件的问题解决了。

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

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

     

     

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

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

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



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

    <link rel="stylesheet" href="<?php echo Yii::$app->request->baseUrl; ?>/assets/admin/bower_components/bootstrap/dist/css/bootstrap.min.css">


    那么这样的话,理论上我们的前端页面部分就应该是完成了。

    毕竟都是静态页面,如果配置得当,下载的时候什么样子,现在就是什么样子。

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

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

     

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

     

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


关键字yii php