浏览文章
文章信息
步骤1:创建system.xml文件。
按照该部分
Store > Configuration
下的路径,Sales
您可以创建一个新部分custom_section
,创建一个新的字段组custom_group
,并custom_file_upload
通过system.xml
在模块中添加文件来创建文件上传应用以下代码段。文件路径:
app/code/Mageplaza/HelloWorld/etc/adminhtml/system.xml
<section id="mageplaza_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
字段是不言自明的,而tab是该部分的确切位置,sales标签从设置Magento_Sales::etc/adminhtml/system.xml file
,资源将应用于ACL。但是,请记住,只有Magento_Sales::config_sales
可能访问此部分的管理员。接下来,
Group
脚本代码中的require将包含允许您根据需要上传文件的字段。该组包含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="mageplaza_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
文件是\Mageplaza\HelloWorld\Model\Config\Backend\CustomFileType
,请看看下面的例子只包括csv
和xls
感谢功能getAllowedExtensions()
。<?php namespace Mageplaza\HelloWorld\Model\Config\Backend; class CustomFileType extends \Magento\Config\Model\Config\Backend\File { /** * @return string[] */ public function getAllowedExtensions() { return ['csv', 'xls']; } }步骤2:清除快取并检查结果
bin/magento cache:clean
并检查结果。