系统配置中的 Magento 2 文件上传
当您使用 Magento 2 管理界面时,完全可以在 Magento 2 系统配置中上传文件。在Magento 2中,管理界面接受各种输入类型,例如文本文件、单选按钮、下拉列表和多选,这些输入类型是纯文本、加密或序列化的,然后以不同的方式显示,例如网格、表单、简单字段和图像。支持多种文件类型,例如 XML、PHP、JPG、CSV、DOCS、XLS。特别是,Magento 还允许您扩展默认接口,然后您可以自由添加字段。现在让我们阅读这篇文章并获取详细说明。
Magento 2商店配置中上传文件的方法
- 步骤1:创建system.xml文件
- 步骤2:刷新缓存并检查结果
步骤1:创建system.xml文件。
按照路径Store > Configuration
,在Sales
部分下,您可以创建一个新部分custom_section
,创建一组新字段custom_group
,并custom_file_upload
通过system.xml
在模块中添加文件来创建文件上传
应用以下代码片段。文件路径:app/code/Example/HelloWorld/etc/adminhtml/system.xml
<section id="example_helloworld_section" translate="label" type="text" sortOrder="301" showInDefault="1" showInWebsite="1" showInStore="0">
<label>Sales</label>
<tab>sales</tab>
<resource>Magento_Sales::config_sales</resource>
<group id="custom_group" translate="label" type="text" sortOrder="6" showInDefault="1" showInWebsite="1" >
<label>Custom group</label>
<field id="custom_file_upload" translate="label" type="Magento\Config\Block\System\Config\Form\Field\File" sortOrder="6" showInDefault="1" showInWebsite="1" >
<label>Upload custom file</label>
</field>
</group>
</section>
在上面的脚本中,有一些点您需要知道它们是什么。首先,Section
字段是不言自明的,而选项卡是该部分的确切位置,销售选项卡是从 中设置的Magento_Sales::etc/adminhtml/system.xml file
,资源将应用于ACL。但是,请记住,只有管理员才能Magento_Sales::config_sales
访问此部分。
接下来,Group
在脚本代码中需要包含允许您根据需要上传文件的字段。该组包含id和type属性。id指向某些自定义文件上传,但它对于每个组来说肯定是唯一的。并且类型设置为Magento\Config\Block\System\Config\Form\Field\File
,但是如果要上传图片,请记住类型Magento\Config\Block\System\Config\Form\Field\Image
。
最后虽然得到了上传文件,但是还是不行。为您建议以下两件事。
- 在此后端模块中,您应该设置上传目录,检查允许的扩展名,验证文件大小并将文件路径保存到数据库。文件上传的默认后端模型是
Magento\Config\Model\Config\Backend\File
. 然后我们添加<upload_dir>
-上传目录来运行文件。
<backend_model>Magento\Config\Model\Config\Backend\File</backend_model>
<upload_dir>upload</upload_dir>
从应用程序根目录,上传的文件将放在magento_root/upload/
. 但是,当您在上传目录中插入scope_info=”1”时,上传的文件将保存到基于范围的位置。如果您应用默认范围,文件将位于magento_root/upload/default
. 网站 1 会给我们magento_root/upload/websites/1/
等。运行配置以清除所有内容:
<section id="example_helloworld_section" translate="label" type="text" sortOrder="301" showInDefault="1" showInWebsite="1" showInStore="0">
<label>Sales</label>
<tab>sales</tab>
<resource>Magento_Sales::config_sales</resource>
<group id="custom_group" translate="label" type="text" sortOrder="6" showInDefault="1" showInWebsite="1" >
<label>Security</label>
<field id="custom_file_upload" translate="label" type="Magento\Config\Block\System\Config\Form\Field\File" sortOrder="6" showInDefault="1" showInWebsite="1" >
<label>Upload custom file</label>
<backend_model>Magento\Config\Model\Config\Backend\File</backend_model>
<upload_dir config="system" scope_info="1">test</upload_dir>
</field>
</group>
</section>
- 除了后端模型之外,您还可以参考其他选项,例如 frontend_model (例如,用于自定义“拖放”文件上传)、注释、工具提示、提示、验证等。
在 Magento 2 商店配置中上传文件时,许多类型的文件都会被接受。但如果你想限制的话,这是不允许的。为此,请在system.xml
文件 中\Example\HelloWorld\Model\Config\Backend\CustomFileType
查看以下仅包含csv
并xls
感谢函数的示例getAllowedExtensions()
。
<?php
namespace Example\HelloWorld\Model\Config\Backend;
class CustomFileType extends \Magento\Config\Model\Config\Backend\File
{
/**
* @return string[]
*/
public function getAllowedExtensions() {
return ['csv', 'xls'];
}
}
步骤2:刷新缓存并检查结果
刷新 Magento 缓存并检查结果。