杂货crud getState用于上传和更新时的上传

时间:2014-01-08 14:36:58

标签: php codeigniter codeigniter-2 grocery-crud

我坚持使用 codeigniter,Grocery CRUD 代码,这部分代码让我感到不安:

   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 ”以外的任何内容作为当前状态。

请帮助我!提前谢谢。

1 个答案:

答案 0 :(得分: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);