1. 了解目录的框架结构 framework主要有

        base          框架核心组件

        caching        缓存组件

        db                数据库组件

        gii                代码自动生成组件

        logging        日志组件

        validators        表单验证组件

        web                 应用组件

创建的应用的文件夹下的目录 的主要结构:

components           应用组件

config                    配置文件(数据库,缓存等等)

controllers             控制器mvc

models                    模型MVC

views                    视图MVC

现在我们开始实战了

目录protected/controllers有一个siteController.php的文件

我们访问路由lcoalhost/yii/cms/index.php?r=site/index 就是调用上面文件下的index的方法

其中的控制器对应的是与view下的文件夹应该同名 比如siteController.php对应的是views下的site文件夹

现在我们可以进行基本的操作了 但是现在的样式,js都没引进来

由于每一分文件都要有入口index.php进入 那么我们要做的是在入口文件下面引入一个常量的文件

 // 引入定义好的常量require_once (dirname(__FILE__).'/protected/config/constant.php');

接下来要在对应项目的配置文件下建立一个常量文件

<?php/** * 设置系统常量  */define('SITE_URL', 'localhost/yii/cms');define('CSS_URL',"assets/default/css/");    //前台样式目录地址define('IMG_URL',"assets/default/img/");    //前台图片目录地址define('HOUTAI_CSS_URL',"assets/houtai/css/");    //后台样式目录地址define('HOUTAI_IMG_URL',"assets/houtai/img/");    //后台图片目录地址

现在我们的前端样式已经出来了

必须注意的是main.php是我们的主配置文件 在加载入口文件的时候已经加载进去

接下来我们要建立后台

1。打开主配置文件 main.php文件  找到gii 如果gii被注释了  那么就解除注释

2. 打开后台localhost/yii/cms/index.php?r=gii

密码为main中的密码

3.选择Module Generator建立一个新的模块 如houtai

此时模块已经创建成功了 ,但是没有和主配置文件取得关联

所以 我们要与配置文件取得关联

 'modules'=>array(  // uncomment the following to enable the Gii tool    'gii'=>array(   'class'=>'system.gii.GiiModule',   'password'=>'root',   // If removed, Gii defaults to localhost only. Edit carefully to taste.   'ipFilters'=>array('127.0.0.1','::1'),  ),  // 引入后台模块  'houtai', ),

填入上面的引用

创建模型的方法与前台的方法一样

后台的路由地址localhost/yii/cms/index.php?r=模块/控制器/方法

前台的路由地址:localhost/yii/cms/index.php?r=控制器/方法

css,js配置见上文

注意:iframe中的应用问题:

target=”名字”  //这个名字与frame里边的名字一致,那么链接内容会跑到这个frame里边。

即 iframe中的target名称必须与frameset中的frame name名称相同

下面我们来进行数据库的操作

     1.建立数据库 如下

CREATE TABLE `sw_goods` (  `goods_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id',  `goods_name` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '商品名称',  `goods_weight` int(11) NOT NULL DEFAULT '0' COMMENT '重量',  `goods_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '价格',  `goods_number` int(11) NOT NULL DEFAULT '100' COMMENT '数量',  `goods_category_id` int(11) NOT NULL DEFAULT '0' COMMENT '分类',  `goods_brand_id` int(11) NOT NULL DEFAULT '0' COMMENT '品牌',  `goods_introduce` text COLLATE utf8_unicode_ci COMMENT '详细介绍',  `goods_big_img` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '商品图片',  `goods_small_img` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '商品小图',  `goods_create_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',  PRIMARY KEY (`goods_id`)) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='商品表';SET character_set_client = @saved_cs_client;

2.在控制器的任意位置输出var_dump(Yii:app()->db);

一个数据表中的字段对应的是一个模型

3.学习ar技术即(CActiveRecord.php)

地址:framework/views/CAtiveRecord.php

此时由于是操作数据库的,那么我们有必要打开调试日志

在主配置文件中找到   CWebLogRoute 进行解开注释

1.render 输出父模板的内容,将渲染的内容,嵌入父模板。|
2.renderPartial 则不输出父模板的内容。只对本次渲染的局部内容,进行输出。

4.显示页--show

// 产生模型model 对象
   $goods_model=Goods::model();

// 通过具体sql语句获得商品信息

$sql="select goods_id,goods_name,goods_price,goods_create_time from {{goods}} limit 10"; 
   $goods_infos=$goods_model->findAllBySql($sql);

//输出

$this->renderPartial('show',array('goods_infos'=>$goods_infos));

此时我们可以通过ar获取信息

ar:findallBysql();通过sql的形式查询信息

5.添加页--add

//实例化模型类(激活)

$goods_model=new Goods();

//判断Goods模型是否有传入,有的话遍历放入激活的类中,再进行保存

if(isset($_POST['Goods'])){

foreach ($_POST['Goods'] as $_k => $_v) {
    $goods_model->$_k=$_v;
   }

$goods_model->goods_create_time=time();
  
   // 调用save()方法实现数据添加
   if($goods_model->save())
    // echo "success";
    // 信息添加成功后实现页面重定向(商品列表页面)
    $this->redirect("./index.php?r=houtai/goods/show");
  }

$this->renderPartial('add',array('goods_model'=>$goods_model));

商品修改页

	function actionUpdate(){
		//我们具体修改哪个商品,需要将其信息查询出来
		// 我们需要知道哪个商品被修改,把商品的id信息通过get方式传递过来
		//接收被修改商品id信息 

		// $this->renderPartial('update');
	}

  下面我们来进行一个模拟数据添加的测试方法:

	/*
	*通过模型实现数据添加
	*测试方法
	*/
	function actionJia(){
		// 1.创建模型对象
		$goods_model=new Goods();//我们需要添加数据,创建对象方式有别于查询

		// 2。对象丰富属性 goods_name,goods_price,goods_weight等等
		$goods_model->goods_name="Apple 5s";
		$goods_model->goods_price=5199;
		$goods_model->goods_weight=102;

		// 3.调用save()方法实现数据添加
		if($goods_model->save())
			echo "success";
		else
			echo "fail";
	}

  对于一些常用的小组件,yii通过对其的封装 我们可以对其进行直接的调用

首先我们想要知道我们可以调用什么组件,我们可以在framework/widgets/views/下面对应组件

然后我们可以进入组件中。查看可以调用的方法  为了方便起见 我们可以用netbean来进行查看

如在houtai/views/good/add.php中有一下的例子

    <?php $form=$this->beginWidget('CActiveForm') ?>
            <table border="1" width="100%" class="table_a">
                <tr>
                    <td>
                        <?php echo $form->labelEx($goods_model,'goods_name'); ?>
                    </td>
                    <td>
                    <!-- <input type="text" name="f_goods_name" /> -->
                    <?php echo $form->textField($goods_model,'goods_name'); ?>
                    </td>
                </tr>

  此时我们了解到方法中的$goods_model是控制器中的模版输出对象

而goods_name是我们在同一个项目的目录下protected/model/goods.php中的attributeLabels()方法对应

	function attributeLabels(){
		return array(
			'goods_name'=>'商品名称',
			'goods_weight'=>'商品重量',
			'goods_price'=>'商品价格',
			'goods_number'=>'商品数量',
			'goods_category_id'=>'分类',
			'goods_brand_id'=>'品牌',
			'goods_introduce'=>'简介',
		);
	}
}

  

最为简易的yii 教程(一)的更多相关文章

  1. iRedMail邮件系统配置简易视频安装教程

    iRedMail邮件系统配置简易视频安装教程        iRedMail邮件系统配置简易视频安装教程 iRedMail中文名为“艾瑞得邮件系统”, 属于开源的企业邮件解决方案,但其性能不逊于任何商 ...

  2. 【教程】简易CDQ分治教程&学习笔记

    前言 辣鸡蒟蒻__stdcall终于会CDQ分治啦!       CDQ分治是我们处理各类问题的重要武器.它的优势在于可以顶替复杂的高级数据结构,而且常数比较小:缺点在于必须离线操作. CDQ分治的基 ...

  3. HTC One M7简易刷Recovery教程

          HTC One M7作为当下HTC旗下的旗舰热门机,用户们对于刷机的需求都比较强烈,对于刷ROM的前提就是要刷入Recovery,当然作为安卓智能手机HTC one而言也不例外,最近有些用 ...

  4. Django搭建简易博客教程(四)-Models

    原文链接: http://www.jianshu.com/p/dbc4193b4f95 Django Model 每一个Django Model都继承自django.db.models.Model 在 ...

  5. Windows下将程序打包为安装包(最为简易的方式)

    一.准备工作:先下载一个Inno Setup编译器,这里我用到的是5.3.3中文版的. 软件介绍: Inno Setup 是一个免费的安装制作软件,小巧.简便.精美是其最大特点,支持pascal脚本, ...

  6. 小试牛刀——爬topit.me的图片,附github简易上传教程

    接触了scrapy ,发现爬虫效率高了许多,借鉴大神们的文章,做了一个爬虫练练手: 我的环境是:Ubuntu14.04 + python 2.7 + scrapy 0.24 目标 topit.me 一 ...

  7. yii教程

    http://www.yiichina.com/doc 官网是很好的参考文档

  8. iOS开发-Masonry简易教程

    关于iOS布局自动iPhone6之后就是AutoLayOut,AutoLayOut固然非常好用,不过有时候我们需要在页面手动进行页面布局,VFL算是一种选择,如果对VFL不是很熟悉可以参考iOS开发- ...

  9. 辛星PHP教程之yii和ci教程已经写完,望与朋友们交流

     记得有个朋友给我说,你写的PHP框架是不是过于少了.我感觉仅仅有一个thinkphp确实不好,于是就又写了下yii和ci的教程,事实上我之前是研究过这两个框架的,因此写起来也还算得心应手吧.估计接下 ...

随机推荐

  1. 迈出物联网的第一步,玩儿一下Arduino

    大家知道,现在物联网Internet of Things(IoT) 方兴未艾,各种智能设备层出不穷,手表.手环.甚至运动鞋等可穿戴设备,还有智能家居产品,无时无刻不冲击着我们的思想和眼球.Autode ...

  2. centos 7 64位虚机上android4环境运行

    场景 现在的开发大多是在linux的虚拟机上进行,现在有些工作和android有关,因此初步尝试了一下是否可以和目前的场景进行统一. 系统是在vmware workstaion上的centos 7的6 ...

  3. UITabBarController 更改tabbariteam上的选中图片

    首先遵守“ UITabBarControllerDelegate ”协议 再在- (void)viewDidLoad {}方法中设置代理“ self.tabBarController.delegate ...

  4. JavaScript语言精粹(读书笔记)

    第一章 精华 1,JavaScript的函数(主要)基于词法作用域(lexical scoping)的顶级对象.强类型语言允许编译器在编译时检测错误,但弱类型很自由,无需建立复杂的类层次,不用做强制造 ...

  5. SQL SERVER Transactional Replication中添加新表如何不初始化整个快照

    在SQL SERVER的复制(Replication)中,有可能出现由于业务需求变更,需要新增一张表或一些表到已有的复制(发布订阅)当中,这种需求应该是很正常,也很常见的.但是在已有的复制(发布订阅) ...

  6. Linq专题之提高编码效率—— 第三篇 你需要知道的枚举类

     众所周知,如果一个类可以被枚举,那么这个类必须要实现IEnumerable接口,而恰恰我们所有的linq都是一个继承自IEnumerable接口的匿名类, 那么问题就来了,IEnumerable使了 ...

  7. WebAPi的可视化输出模式(RabbitMQ、消息补偿相关)——所有webapi似乎都缺失的一个功能

    最近的工作我在做一个有关于消息发送和接受封装工作.大概流程是这样的,消息中间件是采用rabbitmq,为了保证消息的绝对无丢失,我们需要在发送和接受前对消息进行DB落地.在发送前我会先进行DB的插入, ...

  8. 【静默安装】configToolAllCommands响应文件问题

    [静默安装]configToolAllCommands响应文件问题 客户在静默安装RAC 12.1.0.2的时候有如下的输出: Successfully Setup Software. As inst ...

  9. oracle 使用 dbms_lock.sleep暂停存储过程执行

    grant execute on dbms_lock to USERNAME;   dbms_lock.sleep(time)参数单位为秒   create or replace procedure ...

  10. mysql 安装问题

    针对免安装版的mysql: 1.启动CMD,在mysql安装目录下  ~\bin\目录下,输入: mysqld -install   安装msyql服务: 2.启动MySQL服务,输入: net st ...