国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

YII數據流程淺析

2020-03-22 20:09:13
字體:
來源:轉載
供稿:網友
  • MVC就不解釋,直接上代碼分析數據流程:

    數據庫圖:


    模型部分介紹:

    <?php        /*         * 前兩個方法必須寫         * 繼承自CActiveRecord類 這個類位于 /framework/db/ar/CActiveFinder.php 這個路徑下         * 它包含了常用查詢方法          */	html' target='_blank'>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://img.blog.csdn.net/20141018110648181?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnV5aW5nZmVpODg4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></p><p></p><p>控制器代碼部分解析:這個控制器寫在houtai模塊中,卻可以調用前臺模塊中模型,可見代碼有很高重用性。</p><p></p><pre name="code" class="php"><?php	class GoodsController extends Controller{		function actionShow(){			$goods_model = Goods::model(); //簡單查詢可以通過模型里面靜態方法來創建			$sql = "select goods_name,goods_price,goods_create_time from {{goods}} limit 10";                        $goods_infos = $goods_model ->findAllBySql($sql);//通過原生態sql進行查詢,findALlBySql返回一個對象數組,                         var_dump($goods_infos);			foreach($goods_infos as $v){				echo $v ->goods_name ."<br />";			}                        exit();			$this->render('show',array("goods_infos"=>$goods_infos)); //這種方式會渲染布局                        //$this->renderPartial('add',array('goods_model' => $goods_model)); //這種方式不會渲染布局		}}

    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)包含方法:


    上面數據傳遞關系:

    控制器和視圖關系:


    視圖和模型關系:


    視圖和顯示效果:


    簡單過程就這樣啦!

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 衡山县| 永丰县| 加查县| 平遥县| 军事| 清水河县| 高邮市| 广元市| 乃东县| 沙湾县| 梓潼县| 察雅县| 馆陶县| 远安县| 太白县| 通州区| 历史| 富阳市| 体育| 巴南区| 渑池县| 白城市| 江达县| 凭祥市| 邯郸县| 牙克石市| 卫辉市| 九寨沟县| 鄂托克前旗| 普兰店市| 佳木斯市| 屯昌县| 潜江市| 延边| 平陆县| 资阳市| 江达县| 民丰县| 淳安县| 屯留县| 睢宁县|