[提問交流]AdminController.class.php中editRow方法設計的是否不合理

發表於2020-04-04
final protected function editRow ( $model ,$data, $where , $msg ){  $id = array_unique((array)I('id',0));  $id = is_array($id) ? implode(',',$id) : $id;  $where = array_merge( array('id' => array('in', $id )) ,(array)$where );  $msg = array_merge( array( 'success'=>'操作成功!', 'error'=>'操作失敗!', 'url'=>'' ,'ajax'=>IS_AJAX) , (array)$msg );  if( M($model)->where($where)->save($data)!==false ) {  $this->success($msg['success'],$msg['url'],$msg['ajax']);  }else{  $this->error($msg['error'],$msg['url'],$msg['ajax']);  } }


函式中呼叫if( M($model)->where($where)->save($data)!==false ) 來運算元據庫
而M($model)中在呼叫的時候並沒有$table_pre引數,所以當二次開發時如果表字首不是預設字首的話
將無法使用 editRow等方法   更奇怪的是方法偏偏要使用final關鍵字  所以無法繼承,請問這裡是否用D($model)->where($where)->save($data)!==false來運算元據庫會更好呢。或者去掉final關鍵字  建立AdminExController.class.php來擴充。


我是剛從其他語言轉過來的   所以可能還對框架不是很熟悉  理解有偏差,還請大家多多指導  謝謝
                                                                    2015年1月29日20:57:35 
回覆
按照規範來,那個方法是方便後臺使用的,所以後臺的資料表之類都是固定字首,沒有或者其他的一般是其他系統的表,應該由他們的方法管理
評論

相關文章