【问题标题】:How to stop Resource #100 folder being created when Joomla component gallery is viewed查看 Joomla 组件库时如何停止创建 Resource #100 文件夹
【发布时间】:2012-01-24 09:10:19
【问题描述】:

我为 Joomla 创建了一个基本组件,它允许用户列出一个项目以及一些相关的图像。当查看包含画廊的页面时,会在根 Web 目录中以 Resource 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>

【问题讨论】:

    标签: php resources joomla components


    【解决方案1】:

    改变这个:

    $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()。我还对语句进行了重新排序,以确保在您尝试打开目录之前该目录存在。

    【讨论】:

    • 谢谢戴夫,你解释得很好,现在我明白我做错了什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 2018-01-11
    • 2013-03-25
    • 1970-01-01
    相关资源
    最近更新 更多