我坚持使用 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 ”以外的任何内容作为当前状态。
请帮助我!提前谢谢。
答案 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);