Yii框架開發商城(五)


上一篇中有個問題忘記說了,額,就是最後生成的表單不顯示標籤上的名稱了.....

應該在model中加一個方法... 打開Goods.php   寫attributeLabels() 方法,把模型屬性字段跟標籤名稱對應


ok。現在顯示正常了.............


【把表單的數據添加到數據庫,邏輯部分】

 查看用小物件生成的form表單代碼    <form id="yw0" action="/shop/index.php?r=backshop/goods/add" method="post">

 表單是把數據用post方式提交到 backshop/goods/add 上去了,也就是在 GoodsController 的 actionAdd() 方法中...... 在actionAdd 中打印出來瞅瞅樣子....

  我只輸入了商品名字 其他爲空  ,點擊提交   數據在 actionAdd 方法中用$_POST 接收之後用var_dump 打印


ok,  是以數組形式提交的。是一個二維數組,可以用 $_POST['Goods'] 接收商品信息

在控制器中接收表單提交過來的數據,調用 save()方法實現數據提交:

 20   //商品添加
 21   function actionAdd(){
 22 
 23     $goods_model = new Goods();
 24     
 25     //var_dump($_POST);
 26     //接收表單提交過來的數據
 27     if(isset($_POST['Goods'])){
 28     
 29       //遍歷接收到的數組,封裝數據到 $goods_model
 30       foreach($_POST['Goods'] as $_K=>$_V){
 31       
 32         $goods_model->$_K = $_V;
 33       }
 34       
 35       $goods_model->goods_create_time=time();
 36       
 37       //調用save()方法實現數據提交
 38       if($goods_model->save()){
 39         echo "success...!";
 40       }
 41     }
 42     
 43     $this->renderPartial('add',array('goods_model'=>$goods_model));
 44   }

  現在我就輸一個名字,哈哈哈,點擊添加.....



 看下數據庫中,有沒有剛纔添加的一條名字是哈哈哈的記錄


.ok,添加數據成功


  數據的修改  ----  

  獲得要修改的數據,要展現到表單裏面,在表單裏面修改數據,然後提交 [也是提交到控制器] ,然後在控制器中接收表單數據執行 update

  修改完成後執行 redirect() 方法重定向到商品列表頁面


  在商品展示列表頁面,從修改按鈕跳轉到  ./index.php?r=backshop/goods/update     [GoodsController.php的actionUpdate()方法]

  在actionUpdate()方法中,先要查詢到具體要修改的是哪條記錄,所以要把商品的id通過get傳遞到控制器,修改鏈接如下

  <td><a href="./index.php?r=backshop/goods/update&id=<?php echo $good->goods_id; ?>">修改</a></td>

 

  在控制器的 actionUpdate()方法中實現代碼

 46   //修改商品
 47   function actionUpdate($id){
 48     //通過傳過來的id查詢具體要修改的商品記錄
 49     $goods_model = Goods::model();   //除了添加需要(new model()),其他操作都用 Goods::model()來實例化模型
 50     //通過主鍵查詢需要修改的數據信息(對象)
 51     $goods_info = $goods_model->findByPk($id);
 52     
 53     //傳遞到視圖
 54     $this->renderPartial('update',array('goods_model'=>$goods_info));
 55   }
 56   

刷新下點擊修改看看效果.....



 Yii 框架的小物件是比較猛的,用小物件創建表單.渲染視圖的時候已經幫我們把需要修改的記錄展示在頁面上了,

 點擊修改的時候數據還是提交到控制器的 actionUpdate()方法裏了

<form id="yw0" action="/shop/index.php?r=backshop/goods/update&id=2" method="post">	
 在控制器調用save()方法實現修改數據的提交

注意:

   用 new model() 實例化模型的時候 調用 save() 方法執行的是 insert 操作

   用 Goods::model() 實例化模型的時候 調用 save() 方法執行的是 update 操作

 ok,實現下代碼

 46   //修改商品
 47   function actionUpdate($id){
 48     //通過傳過來的id查詢具體要修改的商品記錄
 49     $goods_model = Goods::model();   //除了添加需要(new model()),其他操作都用 Goods::model()來實例化模型
 50     //通過主鍵查詢需要修改的數據信息(對象)
 51     $goods_info = $goods_model->findByPk($id);
 52     
 53     //修改邏輯跟添加邏輯基本一樣 --- 創建表單 -> 收集數據 -> 賦予模型 -> save()
 54     if(isset($_POST['Goods'])){
 55       foreach($_POST['Goods'] as $_K=>$_V){
 56         $goods_info->$_K=$_V;
 57       }
 58      
 59       $goods_info->goods_create_time=time();
 60      
 61       if($goods_info->save()){
 62         echo "update success...";
 63         //如果執行成功,重定向到商品列表頁面
 64         $this->redirect('./index.php?r=backshop/goods/show');
 65       }
 66     }
 67     
 68     //傳遞到視圖
 69     $this->renderPartial('update',array('goods_model'=>$goods_info));
 70   }

 我從頁面操作 修改名稱 哈哈哈  爲 呵呵呵  ,看下效果

  

看下數據庫的數據......


 ok,修改操作完成


 商品信息刪除操作...這個比較簡單

 商品列表 -- 點擊 刪除 -- 完成數據刪除

 在 GoodsController 中 寫 actionDel() 方法 ...  刪除時也需要通過get傳遞要刪除的商品 Id

 在 show.php 頁面寫好刪除點擊超鏈接

 <td><a href="./index.php?r=backshop/goods/del&id=<?php echo $good->goods_id; ?>">刪除</a></td>      【注意要get傳遞id】

 調用 delete方法刪除 ,如果刪除成功,redirect 重定向到商品列表頁面

 寫下 actionDel 方法代碼

 //刪除信息
 79   function actionDel($id){
 80     //根據id查找要刪除的數據模型對象,通過該對象調用delete方法可以刪除
 81     $goods_model = Goods::model();
 82     $goods_info = $goods_model->findByPk($id);
 83 
 84     if($goods_info->delete()){
 85       //如果刪除成功,重定向到商品列表
 86       $this->redirect('./index.php?r=backshop/goods/show');
 87     }
 88   }

ok,刪除操作也完成了...

 ....

 (後續.....)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章