• Yii 1.1.17 一、安装、目录结构、视图、控制器、扩展自定义函数


    这几天了解了一下Yii框架,以简单的博客项目实战入门。大致的实现流程做个记录。

    一、Yii 安装与环境检测

    从 www.yiiframework.com 获取一份Yii的拷贝,解压到 /wwwroot/yii 目录

    打开浏览器访问 http://127.0.0.1/yii/requirements/index.php,检测本地环境支持。

    二、建立项目与目录介绍

    在命令行环境,cd命令进入到 Yii 框架核心目录 /wwwroot/yii/framework ,键入命令行: php yiic webapp ../blog (注意:确保php.exe的路径配置到环境变量)

    回车后,得到一条确认提示,yes 确定即可。这时在 yii 目录下有了blog 目录,结构如下:

    assets: 公共资源目录,存放JS,CSS,图片资源等等
    protected:书写MVC代码的主要目录 
    themes:主题目录
    uploads:这个是我自己添加的图片上传目录
    .htaccess: 用于Apache重写
    index-text.php:功能测试的入口文件,没用 
    index.php:单入口文件
    

    三、设置默认控制器与载入模板

     1、创建控制器

    class IndexController extends Controller{
      public function actionIndex() {
        //...
      }
    }

    访问:index.php?r=index/index

    r是 route 路由的缩写,/ 分隔 index 控制器和 index 方法

    2、配置默认控制器

    默认访问:控制器SiteController下面的actionIndex方法

    Config/main.php是主配置文件,在其中加入:

    'defaultController' => 'Index',

    3、载入视图

    在控制器方法中,有两个方法可以加载视图:

    $this->render();         // 会加载布局文件
    $this->renderPartial();  // 不会加载布局文件(也不能加载框架自带的jQuery等)
    

     方法中传递视图文件名(YII 1.1.17 中的控制器方法名以 "action" 为前缀,比如 "actionIndex" )

    在视图目录:

    根据控制器名字建立文件夹,里面的文件名是 render 或者 renderPartial 方法传递的名字

    例如:

    控制器是 Index ,则需要建立 Index 文件夹,在 Index 文件夹下建立 index.php 文件,然后渲染视图

    $this->render('index');
    // 或者
    $this->renderPartial('index');

    四、布局介绍

    1、什么是局部

    在 views/layouts 下面的文件是布局文件(有每个模板的公共区域),用 render() 方法渲染视图时会自动加载的文件

    修改步骤:

    • views/layouts下面的,新建布局文件
    • 修改默认布局文件:

    位置:  components/Controller.php ,基类控制器

    修改属性, public $layout = '//layouts/column1';

    这表示使用 protected/views/layouts/column1.php 文件作为默认的布局文件

    2、布局内容

    举个栗子就明白了,比如,一张 html 网页:

    上面是公用头部 html:一般是顶栏,logo, 导航栏等等

    中间左侧的主内容依照不同的网页有不同的内容,使用 <?php echo $content; ?> 

    中间右侧是侧栏 html

    尾部是公用尾部 html:一般是版权信息等等

    五、载入外部文件

    CSS与Js等资源文件放入assets里面,按照前后台目录分开

    Yii::app()->request->baseUrl;可以获取请求的基础路径

    例如: <?php echo Yii:app()->request->baseUrl; ?>/assets/index/css/index.css  将得到一个纸箱前台首页的 css 文件 url

    Yii::app() 返回的是在index.php入口里创建的CWebApplication实例。在一次请求处理过程中,这是唯一的实例

    Yii::app() 主要负责一些全局性的功能模块。

    六、分配变量并在视图中调用

    1、控制器分配变量

    $data = array(
      'articleList' => $articleList,
      'page' => $page
    );
    $this->render('index', $data);

    2、视图中调用变量

    <?php foreach($article as $v): ?>
      <li><?php echo $v->title; ?></li>
    <?php endforeach; ?>
    

    七、扩展自定义函数

    在protected目录下建立function.php文件

    在单入口中引入,

    require_once('./protected/function.php');

  • 相关阅读:
    洛谷P2158 [SDOI2008]仪仗队 欧拉函数的应用
    leetcode 130. 被围绕的区域 DFS
    TediousLee CodeForces
    AccurateLee双指针+贪心+字符串
    leetcode80. 删除排序数组中的重复项 II
    CHFDORA:哆啦 A 梦
    cdq分治浅谈
    leetcode面试题64. 求1+2+…+n
    leetcode84. 柱状图中最大的矩形
    leetcode874. 模拟行走机器人
  • 原文地址:https://www.cnblogs.com/mingc/p/6746706.html
Copyright © 2020-2023  润新知