magento2文件上传添加自定义配置

7天成为Magento系统架构师,现在开始学习Magento全栈开发!

《Magento2.X企业级开发实战》

第 1 步:创建 system.xml 文件。

按照路径 Store > Configuration,在 Sales 部分下,您可以创建一个新部分 custom_section,创建一组新的字段 custom_group,并通过在您的模块中添加 system.xml 文件来创建文件上传 custom_file_upload

应用以下代码片段。 文件路径: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>

在上面的脚本中,您需要了解一些要点。首先,部分字段是不言自明的,而选项卡是部分的确切位置,销售选项卡从 Magento_Sales::etc/adminhtml/system.xml 文件中设置,资源将应用于 ACL。但是,请记住,只有拥有 Magento_Sales::config_sales 的管理员才能访问此部分。

接下来,脚本代码需要的组将包括允许您根据需要上传文件的字段。该组包含 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。然后让我们添加 - 上传目录来运行文件。 Magento\Config\Model\Config\Backend\File 上传
从应用程序根目录,文件上传将放在 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,请查看以下示例,由于函数 getAllowedExtensions(),该示例仅包含 csv 和 xls。

<?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 步:刷新缓存并检查结果 刷新 Magento 缓存并检查结果。

如无特殊说明或标注,任何个人或组织,复制、转载、采集本站内容请注明:
本文来源于:【Magento中文网】,并添加本文地址链接。
如未按上述操作复制或转载,本站有权追究法律责任。
若本站内容侵犯了原著者的合法权益,可联系我们进行处理。