我在将 var 传递给 Ckfinder 以便它打开与当前编辑页面匹配的文件夹时遇到困难。
想要的文件夹与我的数据库字段“画廊”同名,我可以通过这种方式传入 url :
$url_edit = 'modifier-' . $_GET['page'] . '-' . $data["id"] . '-' . $data['gallery'] . '';
// RewriteRule ^modifier-(.*)-([0-9]+)-(.*)$ admin.php?modif=$1&id=$2&dir=$3 [L]
我认为 Ckfinder 的 config.php 的这一部分可能是传递我的 var
$_GET['dir']
并指向特定文件夹(默认:“照片”)的最佳位置:
if(isset($_GET['dir'])) {
die(var_dump('DEBUG')); // DEBUG
$galleryDir = '/' . $_GET['dir'];
}
$config['resourceTypes'][] = array(
'name' => 'Photos',
'directory' => 'photos' . $galleryDir . '' ,
'maxSize' => 0,
'allowedExtensions' => 'bmp,gif,jpeg,jpg,png',
'deniedExtensions' => '',
'backend' => 'default'
);
我使用官方文档中的代码将 Ckfinder 作为模式打开(我没有更改它,因为我不习惯 Javascript):
var button1 = document.getElementById( 'ckfinder-galerie' );
button1.onclick = function() {
selectFileWithCKFinder( 'ckfinder-input-1' );
};
function selectFileWithCKFinder( elementId ) {
CKFinder.modal( {
chooseFiles: true,
width: 800,
height: 600,
onInit: function( finder ) {
finder.on( 'files:choose', function( evt ) {
var file = evt.data.files.first();
var output = document.getElementById( elementId );
output.value = file.getUrl();
} );
finder.on( 'file:choose:resizedImage', function( evt ) {
var output = document.getElementById( elementId );
output.value = evt.data.resizedUrl;
} );
}
} );
}
问题:
$_GET['dir']
似乎没有通过模态传递,因此它当前不会创建所需的$galleryDir
变量(也没有用于调试的die()
函数)。我在这里做错了什么吗?如果这个方法不如我想象的那么好,我也愿意接受其他方法。
感谢您以后的帮助!
感谢 CBroe 的指导,我找到了传递变量的方法。不是 100% 有效,但足以满足我的需求:
在加载 Ckfinder 之前在会话中传递 var :
if(isset($_GET['dir'])) {
$_SESSION['dir'] = $_GET['dir'];
}
然后在 Ckfinder 的 config.php 中检索它以动态创建新的目录变量:
if(isset($_SESSION['dir'])) {
$galleryDir = '/' . $_SESSION['dir'];
}
$config['resourceTypes'][] = array(
'name' => 'Photos',
'directory' => 'photos' . $galleryDir . '' ,
'maxSize' => 0,
'allowedExtensions' => 'bmp,gif,jpeg,jpg,png',
'deniedExtensions' => '',
'backend' => 'default'
);
它工作得很好:模式专注于与编辑页面匹配的所需文件夹。传递特定的目录 url 不允许浏览文件夹,尽管“目录”var 将自己视为根文件夹。