我为Joomla创建了一个基本组件,允许用户列出一个项目以及一些相关的图像。当包含画廊的页面被查看时,会在根目录中创建一个奇怪的文件夹,格式为资源id #100,每个项目的数量不同。我已经将导致这种情况的代码缩小到以下代码。我的问题是,有人能看到我在做什么来导致这种情况吗?有人能提供替代我用来从特定目录读取文件并返回信息的代码吗?
<p id="sl_gallery">
<?php if( is_file( JPATH_ROOT.'/components/com_eg/images/gallery/'.$this->eg->id.'/main.jpg' ) ) : ?>
<img src="<?php echo JURI::root().'/components/com_eg/images/gallery/'.$this->eg->id.'/main.jpg' ?>" alt="myimage">
<?php else: ?>
<img src="<?php echo JURI::root().'/components/com_eg/images/nolistings.gif'; ?>" alt="myimage" />
<?php endif; ?>
<?php
$TrackDir= opendir(JPATH_ROOT.'/components/com_eg/images/gallery/'.$this->eg->id.'/second/');
$count = 0;
if ( !JFolder::exists($TrackDir) ) { JFolder::create($TrackDir); }
while (($file = readdir($TrackDir)) !== false) {
if ($file == "." || $file == "..") { }
else {
?>
<img src="<?php echo JURI::root().'/components/com_eg/images/gallery/'.$this->eg->id.'/second/'.$file; ?>" alt="myimage" />
<?php
}
}
closedir($TrackDir); ?>
</p>
修改如下:
$TrackDir= opendir(JPATH_ROOT.'/components/com_eg/images/gallery/'.$this->eg->id.'/second/');
$count = 0;
if ( !JFolder::exists($TrackDir) ) { JFolder::create($TrackDir); }
…:
$TrackDirPath = JPATH_ROOT.'/components/com_eg/images/gallery/'.$this->eg->id.'/second/';
if ( !JFolder::exists($TrackDirPath) ) { JFolder::create($TrackDirPath); }
$TrackDir = opendir($TrackDirPath);
$count = 0;
$TrackDir
保存对opendir()
调用的结果——这意味着它要么是资源,要么是FALSE
。当您将资源转换为字符串时,它会导致Resource id #
-您通过(有效地)将其传递给mkdir()
来实现。
我已经将路径作为字符串存储在变量$TrackDirPath
中,并将其传递给JFolder::create()
。我还重新排序了语句,以确保在您尝试打开目录之前目录存在。