【问题标题】:CS-Cart addon.xml file full pathCS-Cart addon.xml 文件完整路径
【发布时间】:2018-01-22 11:49:38
【问题描述】:

如果为 cs-cart 模块创建 addon.xml 文件并指定带有 type=file 的选项,就像这样

<?xml version="1.0"?>
<addon scheme="3.0">
    <id>my_addon</id>
    <version>1.0</version>
    <priority>4000</priority>
    <status>active</status>
    <auto_install>ULTIMATE,MULTIVENDOR</auto_install>
    <default_language>en</default_language>

    <dependencies/>
    <settings edition_type="ROOT,ULT:VENDOR">
        <sections>
            <section id="general">
                <items>
                    <item id="attach_file">
                        <type>file</type>
                    </item>
                </items>
            </section>
        </sections>
    </settings>
</addon>

一切都在客户端完美运行:文件管理器通过单击“浏览...”按钮打开,用户可以上传和选择文件。但是当文件管理器中的文件被选中时,只有它的结束文件名被粘贴到模块设置表单字段中,所以它不存储上传的文件位置/路径。只有它的文件名。我试过使用

Registry::get('config.dir.files').Registry::get('addons.my_addon.attach_file');

获取完整的上传文件路径,但无法正常工作。它返回类似/path/to/site/root/var/files/my-file.pdf 的东西,而不是真正的/path/to/site/root/var/files/1/my-file.pdf(在文件名之前有一个额外的1 目录,我不知道如何表示它)。如果手动添加额外的1,那么它可能无法在不同的 CS-Cart 配置上运行。

那么,如何在管理面板的模块设置弹出窗口中的文件管理器中获取完整的上传文件路径?

【问题讨论】:

    标签: php backend cs-cart


    【解决方案1】:

    fn_get_files_dir_path() 全局函数将返回特定于上下文(特定于存储)的文件路径。

    例如。在您的情况下,它将返回:/path/to/site/root/var/files/1/。然后您可以从附加设置中获取文件名:Registry::get('addons.my_changes.file'),您就可以开始了。

    但是,您可以将公共文件链接到附加设置,因此可以是两种情况:

    A:文件的路径是:fn_get_files_dir_path() . Registry::get('addons.my_changes.file')

    B:文件的路径是:fn_get_public_files_path() . Registry::get('addons.my_changes.file')

    在使用该文件之前,您应该检查哪个路径是有效的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多