如果为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配置上使用。
那么,如何从管理面板的模块设置弹出窗口中的文件管理器中获取完整的上传文件路径?
答案 0 :(得分:1)
fn_get_files_dir_path()
全局函数将返回特定于上下文(特定于存储区)的文件路径。
EG。在您的情况下,它将返回:/path/to/site/root/var/files/1/
。然后,您可以从附加设置中获取文件名:Registry::get('addons.my_changes.file')
,您就可以了。
但是,您可以将公共文件链接到附加设置,因此它可以是2个场景:
答:文件的路径是:fn_get_files_dir_path() . Registry::get('addons.my_changes.file')
或强>
B:文件的路径为:fn_get_public_files_path() . Registry::get('addons.my_changes.file')
在使用该文件之前,您应该检查哪个路径有效。