2014-01-08 66 views
0

我堅持笨,雜貨店CRUD代碼,這裏是代碼的部分是一直困擾着我:食品污物的getState同時插入和更新

if($state == 'add'){//add state 
     $upload_path = '/files/dir1/'; 
    } 
    else if($state == 'edit'){//edit state 
     $upload_path = '/files/dir2/'; 
    } 
    $this->crud->set_field_upload('image_url', $upload_path); 

在這裏,我想交換$ upload_path根據當前狀態。但是這個給我帶來麻煩。一切工作正常,除了文件上傳到默認* $ upload_dir *,這是在Grocery_CRUD.php設置。花了很多時間後,我發現$ state的值爲'upload_file'用於所有文件上傳(不管添加或編輯操作如何)。我非常需要區分插入或更新狀態。我試着用

if(strpos($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], '/add')){ 
      $upload_path = '/files/dir1/'; 
} 
else if(strpos($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], '/edit')){ 
      $upload_path = '/files/dir2/'; 
} 

梳理出來,甚至試圖利用:

strpos(current_url, '/add') 
strpos(current_url, '/edit') 

一切都失敗,因爲該Grocery_CRUD.php庫文件是不能夠告訴我,不是「upload_file」以外的任何作爲當前狀態。

請幫助我!提前致謝。

回答

0

我已經想出了自己,訣竅是創建一個會話變量,並在上傳被調用之前檢查它與以前的狀態。

爲在會話中創建一個變量,檢查它的值反對添加或編輯並相應地分配路徑。

$upload_path = ''; 
if($state == 'add' || $state == 'edit'){//only create the session if $state is add or edit 
    $this->session->set_userdata('statevar',$state); 
} 
if($this->session->userdata('statevar') == 'add'){//add state 
    $upload_path = 'files/dir1/'; 
} 
else if($this->session->userdata('statevar') == 'edit'){//edit state 
    $upload_path = 'files/dir2/'; 
} 
$this->crud->set_field_upload('imgurl', $upload_path);