我刚刚集成了ELFinder,它运行得很好。我正在使用codeigniter实现,这就是我获得下面大部分内容的方式。我的问题是,我计划在不同的视图中使用它,那么在加载视图时,我如何选择Elfinder打开的文件夹?我在startPath上阅读,但可能没有正确使用它。例如,在一个视图中,我可能需要它来打开"Stuff"文件夹,在另一个视图中将需要它来开启"Something"文件夹。
正如教程所指出的,这是我在Files控制器中的方法(controllers/Files.php):
function elfinder_init($startPath = '')
{
$this->load->helper('path');
$opts = array(
'debug' => true,
'roots' => array(
array(
'driver' => 'LocalFileSystem',
'path' => set_realpath('assets/uploads'),
'startPath' => $startPath,
'URL' => site_url('assets/uploads') . '/'
// more elFinder options here
)
)
);
$this->load->library('elfinder_lib', $opts);
}
然后假设我用创建了一个"Stuff"视图(views/Stuff.php)
<script type="text/javascript" charset="utf-8">
jQuery(document).ready(function($) {
var elf = $('#elfinder').elfinder({
// lang: 'ru', // language (OPTIONAL)
sync: 1000,
defaultView: 'list',
customData: {'startPath': 'stuff'},
url : '<?php echo site_url("Files/elfinder_init"); ?>', // connector URL (REQUIRED)
}).elfinder('instance');
});
</script>
<!-- Element where elFinder will be created (REQUIRED) -->
<div id="elfinder"></div>
我也试过url : '<?php echo site_url("Files/elfinder_init"); ?>/stuff'
,但没有运气
这是我的库文件(Elfinder_lib.php):
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'elfinder/elFinderConnector.class.php';
include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'elfinder/elFinder.class.php';
include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'elfinder/elFinderVolumeDriver.class.php';
include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'elfinder/elFinderVolumeLocalFileSystem.class.php';
class Elfinder_lib
{
public function __construct($opts)
{
$connector = new elFinderConnector(new elFinder($opts));
$connector->run();
}
}
我需要编辑Files.php控制器文件来检查$_GET请求,如下所示。
function elfinder_init()
{
$this->load->helper('path');
$filePath = 'assets/uploads';
$startPath = $filePath;
if(isset($_GET['startPath']) && !empty($_GET['startPath'])) {
$startPath .= '/'.$_GET['startPath'];
}
$opts = array(
'debug' => true,
'roots' => array(
array(
'driver' => 'LocalFileSystem',
'path' => set_realpath($filePath),
'URL' => site_url('assets/uploads') . '/',
'startPath' => $startPath
// more elFinder options here
)
)
);
$this->load->library('elfinder_lib', $opts);
}
然后,当我们像这样加载elfinder时,我可以在我的视图文件中使用customData选项:
<script type="text/javascript" charset="utf-8">
jQuery(document).ready(function($) {
var elf = $('#elfinder').elfinder({
// lang: 'ru', // language (OPTIONAL)
sync: 1000,
defaultView: 'list',
customData: {'startPath': 'something'},
rememberLastDir: false,
url : '<?php echo site_url("Files/elfinder_init"); ?>', // connector URL (REQUIRED)
}).elfinder('instance');
});
</script>
自定义数据引用&子文件夹的外部链接