首页 > 代码库 > YII简单MVC浅析(菜鸟总结)
YII简单MVC浅析(菜鸟总结)
MVC就不解释,直接上代码分析:
数据库图:
模型部分介绍:
<?php /* * 前两个方法必须写 * 继承自CActiveRecord类 这个类位于 \framework\db\ar\CActiveFinder.php 这个路径下 * 它包含了常用查询方法 */ class Goods extends CActiveRecord{ public static function model($classname = __CLASS__){ //返回当前模型对象方法 return parent::model($classname); } //返回数据表名称 public function tableName(){ return '{{goods}}'; } //对应标签名字 对汉字名字进行统一管理 function attributeLabels() { //parent::attributeLabels(); return array( 'goods_name' => '商品名称:', 'goods_weight' => '商品重量', 'goods_price' => '商品价格', 'goods_category_id' => '商品分类', 'goods_brand_id' => '品牌', 'goods_introduce' => '简介', 'goods_number' => '数量', ); } } ?>
</pre><p></p><p>CActiveRecord这个类下很多操作数据库方法:</p><p><img src=http://www.mamicode.com/"http://img.blog.csdn.net/20141018110648181?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnV5aW5nZmVpODg4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />控制器代码部分解析:这个控制器写在houtai模块中,却可以调用前台模块中模型,可见代码有很高重用性。
<?php>
findAllBySql($sql)数据分析:
通过这个URL访问的部分views代码:
<table class="table_a" border="1" width="100%"> <tbody><tr style="font-weight: bold;"> <td>序号</td> <td>商品名称</td> <td>库存</td> <td>价格</td> <td>图片</td> <td>缩略图</td> <td>品牌</td> <td>创建时间</td> <td align="center">操作</td> </tr> <?php $i=1; foreach($goods_infos as $_v){ ?> <tr id="product1"> <td><?php echo $i++;?></td> <td><a href="#">苹果(APPLE)iPhone 4S<?php echo $_v->goods_name;?></a></td> <td><?php echo $_v->goods_number;?></td> <td><?php echo $_v->goods_price ;?></td> <td><img src="<?PHP ECHO HOUTAI_IMG_URL ;?><?php echo $_v->goods_big_img;?>" height="60" width="60"></td> <td><img src="<?PHP ECHO HOUTAI_IMG_URL ;?><?php echo $_v->goods_small_img;?>" height="40" width="40"></td> <td><?php echo $_v->goods_brand_id;?></td> <td><?php echo $_v->goods_create_time;?></td> <td><a href="./index.php?r=houtai/goods/update">修改</a></td> <td><a href="javascript:;" onclick="delete_product(1)">删除</a></td> </tr> <?php } ?> <tr> <td colspan="20" style="text-align: center;"> [1] </td> </tr> </tbody> </table>
数据传递关系:
通过widget小物件完成表单注册解析:
刚才那个控制器里面加入下面方法:
function actionAdd(){ $goods_model = new Goods(); $this->renderPartial('add',array('goods_model' => $goods_model)); }
模型还是刚才那个模型;views:
<?php $form = $this -> beginWidget("CActiveForm");?> <!-- 调用了 CActiveForm 类 怎样查找CActiveForm类,在\framework\yiilite.php 里查找,这个文件10000多行,可见yii核心代码就是这么多行 通过这个在找到 CActiveForm所在文件 CActiveForm.php包含了很多方法。就是对表单元素操作 --> <table border="1" width="100%" class="table_a"> <tr> <!-- <td>商品名称</td>--> <!-- <td><input type="text" name="f_goods_name" /></td>--> <td><?php echo $form->labelEx($goods_model,'goods_name');?></td> <td><?php echo $form -> textField($goods_model,'goods_name');?></td> </tr> <tr> <td><?php echo $form->labelEx($goods_model,'goods_weight');?></td> <td> <?php echo $form -> textField($goods_model,'goods_weight');?></td> </tr> <tr> <td><?php echo $form->labelEx($goods_model,'goods_price');?></td> <td> <?php echo $form -> textField($goods_model,'goods_price');?></td> </tr> <tr> <td><?php echo $form->labelEx($goods_model,'goods_number');?></td> <td> <?php echo $form -> textField($goods_model,'goods_number');?></td> </tr> <tr> <td><?php echo $form->labelEx($goods_model,'goods_category_id');?></td> <td> <?php echo $form -> textField($goods_model,'goods_category_id');?></td> </tr> <tr> <td><?php echo $form->labelEx($goods_model,'goods_brand_id');?></td> <td><?php echo $form -> textField($goods_model,'goods_brand_id');?></td> </tr> <tr> <td><?php echo $form->labelEx($goods_model,'goods_introduce');?></td> <td><?php echo $form -> textArea($goods_model,'goods_introduce',array('cols' => 20,"rows" => 5));?></td> </tr> </table> <?php $this->endWidget();?>可以看下CActiveForm 类(\framework\web\widgets\CActiveForm.php)包含方法:
上面数据传递关系:
控制器和视图关系:
视图和模型关系:
视图和显示效果:
简单过程就这样啦!
YII简单MVC浅析(菜鸟总结)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。