什么是magento2中的virtual type,magento2虚拟类型的使用方法详解

计算机考研考博经典考题汇总(一次刷新世界观-我相信VIP总是有原因的) 操作系统 操作系统的特点? – 共享:资源可被多个并发执行的进程使用 – 并发:可以在同一时间间隔处理多个进程,需要硬件支持 – 虚拟:将物理实体映射成为多个虚拟设备 – 异步:进程执行走走停停,每次进程执行速度可能不同,但OS需保证进程每次执行结果相同 进程的三个组成部分? 程序段、数据段、PCB(Process Control Block) 并发与并行区别? 并发:同一间隔 并行:同一时刻 进程切换的过程? 保持处理机上下文 -> 更新PCB -> 把PCB移入相应队列(就绪、阻塞) -&g 阅读详情

magento2中的虚拟类型-virtual types是一个比较难理解的地方,今天我们介绍一下magento2中的虚拟类型–virtual types.

magento2中的虚拟类型是Magento的一个非常巧妙的功能,它允许我们更改特定可注入依赖项的参数,从而更改特定类类型的行为。

<MAGENTO_DIR>/module checkout/etc/di.xml文件提供了virtualType及其用法的简单示例:

<virtualType name="Magento\Checkout\Model\Session\Storage" type="Magento\Framework\Session\Storage">
    <arguments>
        <argument name="namespace" xsi:type="string">checkout</argument>
    </arguments>
</virtualType>
<type name="Magento\Checkout\Model\Session">
    <arguments>
        <argument name="storage" xsi:type="object">Magento\Checkout\Model\Session\Storage</argument>
    </arguments>
</type>

这里的virtualType(实际上)通过将其构造函数的namespace=′default′参数重写为namespace='default'参数重写为namespace=′default′参数重写为namespace='checkout’来扩展Magento\Framework\Session\Storage。但是,这一更改本身并没有生效,因为必须首先使用Magento\Checkout\Model\Session\Storage虚拟类型。在这种情况下,它是通过类型定义使用的,其中存储参数完全被虚拟类型取代。

Magento中的大多数virtualType名称属性都采用了不存在的完全限定类名的形式,尽管这可以是PHP数组键中允许的任何字符组合。通过在整个<Magento_DIR>目录的di.xml文件中查找<virtualType字符串,我们可以看到Magento在其大多数模块中使用了数百个虚拟类型。

在Magento_LayeredNavigation模块下可以找到一个更复杂的虚拟类型使用示例。<Magento_DIR>/module layered navigation/etc/frontend/di.xml文件定义了两个虚拟类型,如下所示:

<virtualType name="Magento\LayeredNavigation\Block\Navigation\Category" type="Magento\LayeredNavigation\Block\Navigation">
    <arguments>
        <argument name="filterList" xsi:type="object">categoryFilterList</argument>
    </arguments>
</virtualType>
<virtualType name="Magento\LayeredNavigation\Block\Navigation\Search" type="Magento\LayeredNavigation\Block\Navigation">
    <arguments>
        <argument name="filterList" xsi:type="object">searchFilterList</argument>
    </arguments>
</virtualType>

这里,我们定义了两个虚拟类型,每个类型都更改了Magento\LayeredNavigation\Block\Navigation类的filterList参数。tegoryFilterList和searchFilterList是<Magento_DIR>/module catalog search/etc/di.xml中定义的另外两个虚拟类型的名称

然后,在布局文件中使用Magento\LayeredNavigation\Plock\Navigation\Category和Magento\layedNavigation\Block\Navigation\Search虚拟类型进行块定义,如下所示:

<!-- view/frontend/layout/catalog_category_view_type_layered.xml -->
<referenceContainer name="sidebar.main">
    <block class="Magento\LayeredNavigation\Block\Navigation\Category" ...
    </referenceContainer>
    <!-- view/frontend/layout/catalogsearch_result_index.xml -->
    <referenceContainer name="sidebar.main">
        <block class="Magento\LayeredNavigation\Block\Navigation\Search" ...
        </referenceContainer>

这实际上是告诉Magento,对于类别视图页面和搜索页面,使用类的虚拟类型,从而指示它完成虚拟类型中指定的所有参数更改。

以上内容来自于码小课–Magento专区:
magento-dn.png
码小课的magento专区包含了magento2开发的全栈内容,帮助大家完全尝试magento2开发技能。

SMETANA 安装使用教程 关于SMETANA的安装和简单使用信息 阅读详情

相关推荐

pytorch-cifar100学习资料汇总 - 基于PyTorch的CIFAR-100图像分类实践

pytorch-cifar100是一个基于PyTorch实现CIFAR-100数据集图像分类的开源项目。该项目实现了多种经典的深度学习网络模型,如ResNet、DenseNet、VGG等,为开发者提供了在CIFAR-100数据集上进行图像分类实验的代码范例。pytorch-cifar100项目为我们提供了在CIFAR-100数据集上进行图像分类实验的完整代码实现。无论你是想要学习PyTorch的使用,还是研究不同网络模型在CIFAR-100上的表现,这个项目都是一个很好的起点。

helloaiworld的博客 1123

magento教程---如何使用 virtual types

视频地址: https://www.youtube.com/watch?v=DiAS3vE6OO4&list=PL9Q0S-CmtAhJVjwnK5ip6H84sCuRQcACY&index=28 virtual types 实现了依赖注入的无限嵌套。并且不用创建出实际的类,用di.xml创建出虚拟类。 这个对象,是把一个数组转换成一个对象。然后获取数组的value,就可以用$object->key这样的形式了。 数据访问层 repository repositor...

markdown 1665

HP SPP download

是一个全面的系统软件和固件更新解决方案,以单个ISO映像的形式提供。该解决方案使用智能更新管理器(SUM)作为部署工具。

极致,细节 9857

magento2重写virtualType并且传参

今天遇到一个需求需要重写一个block,但是这个block是应用virtualType实现,所以需要先重写virtualType,然后却因为参数丢失而获取不到正确的结果。因此,查阅文档,需要用type标签进行传参: di.xml <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSche...

weixin_30256901的博客 325

华为OD机试真题2026双机位C卷 Python&JS 实现【明日之星选举】

给定一组选票votes。votes[i]代表第 i 张选票的内容,包含一个字符串"zhangsan,hanmei",表示推荐zhangsan为明日之星,反对 hanmei 称为明日之星。赞成或反对使用逗号(,)分割。 给定一个数组n,表示最后将筛选出赞成票最多的n个人,如果赞成票相同,则反对票越少,排序越靠前;如果赞成票和反对票都相同,则按照姓名字典序升序排序。

MISAYAONE的博客 318

【即插即用模块】注意力篇 | TGRS 2025 | SPR:显著性比例协调,注意力聚焦,先抓差异再精准特征融合!

本文提出SPRMamba网络中的显著性比例协调模块(SPR),用于解决遥感变化检测中非显著变化区域的识别难题。该模块通过差异提取→显著性识别→比例融合的三步流程,动态平衡显著与非显著特征表示。SPR包含空间滤波(SF)和上下文记忆(CMM)两个子模块,分别基于统计特征和深度学习自动区分特征差异中的显著性成分。实验表明,SPR能有效抑制背景噪声干扰,提升边缘检测精度,且随着模块数量的增加,模型性能持续改善。该模块计算成本低,可直接嵌入双输入特征融合场景,适用于各类需要动态特征平衡的视觉任务。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 364

magento---什么时候使用virtul type?

视频地址:https://www.youtube.com/watch?v=lk3VpPz7NMY&list=PL9Q0S-CmtAhJVjwnK5ip6H84sCuRQcACY&index=29 virtual types相当于magento为你创造的一个子类。这个子类是不独立存在的。 当然如果你自己创造一个concrete class也是可以解决virtual type的问题的。 virtualtype 在别的框架里是没有的。是magento的一个特性。 但是手动创建一个子类,然.

markdown 833

GIS数据处理-使用PostGIS+QGIS

GIS数据处理1-使用PostGIS+QGIS 介绍 这里我遇到了一个需求,需要将SQLite的.db数据库中GIS数据导出成shapefile文件 数据库的表结构如下所示,这里存储的是wkt格式的矢量数据 WKT与WKB格式介绍 OpenGIS 规范定义了两种表示空间对象的标准方式:Well-Know Text (WKT) 形式和Well-Known Binary(WKB) 形式。WKT 和 WKB 都包含矢量几何要素的对象类型和构成对象的坐标的信息。WKT可读性强,更方便阅读识别,而在实际数据传输和存

孙霸天的专栏 2527

虚函数 virtual type function(type T)=0; 的含义

什么时候需要定义虚函数, 首先要看成员函数所在的class是否会作为base class,然后看成员函数在class的继承后有无可能被更改功能,如果希望更改其功能的,一般应该将它声明为虚函数。如果成员函数在class被继承后功能不需修改,或派生类用不到该函数,则不要把它声明为虚函数。 纯虚函数是在声明虚函数时被“初始化”为0的函数。声明纯虚函数的一般形式是:virtual 函数类型...

qq_38344751的博客 1564

IMEI引起的无法驻网问题

问题不复杂,场景很简单,如上图,UE在进行LTE attach过程时,在送完NAS security mode complete后,就立刻收到了网络attach reject 带cause 6 Illegal ME,根据协议描述这个cause 代表ME不被网络可接受,例如ME在禁止名单或者黑名单中就会有这种cause。然而前方在报这个问题的时候,也是知道SIM卡和手机IMEI在运营商那边没能成功绑定,然后才报的问题,要查看手机是不是有问题...... 告诉前方原因后,还认为是手机问题,告知要继续查。

asd199086的博客 1426

使用 Simulink Real-Time 搭建一个完整的实时信号采集与滤波系统模型

本文详细介绍了基于Simulink Real-Time构建实时信号采集与滤波系统的完整流程。主要内容包括:系统配置(模型创建与参数设置)、信号采集模块搭建(模拟信号源或真实硬件连接)、实时滤波器设计(浮点/定点)、输出可视化(Scope/ToWorkspace等)、模型编译与下载到目标机、外部模式在线调试及数据保存方法。系统可实现微秒级实时信号处理,适用于工业控制、航空航天等对时间确定性要求高的场景。文章还提供了优化建议(多速率建模、优先级调度等)和应用场景说明,帮助读者快速掌握实时系统开发的核心技能。

amy_mhd的博客 304

Magento 2 virtual type

https://magento.stackexchange.com/questions/33103/what-is-the-difference-between-type-and-virtualtype 1. 是什么 2. 适用场景 1. 是什么 \Class1 -》 public function __construct(\Class2 $argOfClass1){...} ...

davissuperman的专栏 476

《电磁兼容设计》专栏说明

本专栏自2024年1月起开始更新,仅设此一个电磁兼容相关知识专栏,并将一直持续更新下去,无期限

linkking27的博客 791

快速搭建Magento2开发环境:Virtual Machine for Magento2

快速搭建Magento2开发环境:Virtual Machine for Magento2 项目介绍 Virtual Machine for Magento2 是一个专为Magento2开发者设计的开源虚拟机项目。它通过Vagrant和VirtualBox技术,提供了一个快速、可重复的开发环境搭建方案。无论你是Windows、Mac还是Linux用户,都可以轻松地在自己的电脑上搭建一个高效的Mag...

gitblog_00691的博客 858

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ElasticSuite与OpenSearch兼容性详解:如何在Magento 2中迁移到开源搜索解决方案

Smile ElasticSuite是基于ElasticSearch构建的Magento 2 merchandising和搜索引擎,随着OpenSearch的兴起,许多开发者正在考虑迁移到这个开源搜索解决方案。本文将详细解析ElasticSuite与OpenSearch的兼容性,提供完整的迁移指南,帮助你在Magento 2中无缝过渡到开源搜索方案。 ## 为什么选择OpenSearch替代El

gitblog_00237的博客 898

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ElasticSuite开发者指南:如何扩展和自定义这个Magento 2搜索引擎套件

ElasticSuite是Smile开发的Magento 2搜索引擎套件,基于ElasticSearch构建,提供强大的商品搜索和 merchandising 功能。本指南将帮助开发者了解如何扩展和自定义ElasticSuite,以满足特定业务需求。 ## 了解ElasticSuite的核心架构 ElasticSuite采用模块化设计,主要包含以下核心模块: - **module-elast

gitblog_00047的博客 832

ElasticSuite搜索优化实战:10个技巧提升Magento 2电商网站搜索相关性

ElasticSuite是Smile公司为Magento 2开发的基于ElasticSearch的搜索和商品管理引擎,它能显著提升电商网站的搜索体验和相关性。本文将分享10个实用技巧,帮助你充分利用ElasticSuite的强大功能,优化Magento 2网站的搜索性能,让顾客更快找到他们需要的商品。 ## 1. 优化属性权重配置 ElasticSuite允许你为不同的产品属性设置不同的搜索权

gitblog_00473的博客 738

四步打造ESP32网络收音机,新手也能出声

yoRadio 是一个基于 ESP32 的开源网络收音机项目:一块开发板加一块音频模块,四步刷机就能把开发板变成能听电台、能配 Wi-Fi、能接智能家居的桌面音乐中心。适合想动手做智能设备的电子新手和智能家居玩家。 ## 📋 项目速览 | 维度 | 说明 | | --- | --- | | 核心硬件 | ESP32 开发板 + I2S DAC 或 VS1053b 音频模块 | | 屏幕兼容

gitblog_00511的博客 707

Magento 2消息队列与异步处理:高性能电商架构

本文深入探讨了Magento 2消息队列系统的完整架构设计与实现机制。文章详细分析了AMQP消息队列系统的核心组件、配置架构、连接管理机制和拓扑管理设计,阐述了消息路由策略、可靠性设计和安全架构。同时全面介绍了异步操作与批量处理机制的实现原理,包括批量处理架构、消息队列批量发布机制、批量大小配置管理和内存优化策略。此外,还深入解析了消费者配置与消息路由策略,以及性能优化与扩展性的最佳实践,为构建高...

gitblog_00913的博客 907

Magento 2.4 天坑 可配置商品 虚商品(Virtual Product)无法填运输地址导致信用卡无法付款

问题:虚商品(Virtual Product)无法填运输地址导致信用卡无法付款 问题原因:默认虚商品(Virtual Product)是无重量商品(Weight:This item has no weight) 解决方法:改成有重量商品:Weight:This item has weight 或是批量修改 ...

CyrusZhou的专栏 360

ElasticSuite未来路线图:即将推出的新功能和改进方向

ElasticSuite作为Magento 2平台上基于ElasticSearch的强大搜索和商品化引擎,正在持续演进以满足现代电商的需求。🚀 本文将为您揭示ElasticSuite的未来发展蓝图,帮助您了解这个优秀的搜索解决方案即将带来的创新功能和改进方向。 ## 📊 ElasticSuite当前功能概览 在探讨未来之前,让我们先回顾一下ElasticSuite目前提供的强大功能: [

gitblog_00027的博客 463

[StartingPoint][Tier1]Ignition

Common Applications Magento Reconnaissance Web Site Structure Discovery Weak Credentials

855

KVM硬件虚拟化原理与实战:从BIOS开启到SR-IOV直通

硬件虚拟化是现代计算基础设施的基石,其核心在于CPU原生指令集(如Intel VT-x、AMD-V)与操作系统内核协同实现的全虚拟化能力。它通过内核模块(KVM)接管特权指令,结合用户态模拟器(QEMU)和统一管理接口(libvirt),在极低开销下提供接近物理机的性能。该技术显著提升开发测试、边缘NAS、多系统共存等场景的效率与稳定性,广泛应用于Linux桌面虚拟化、私有云及嵌入式仿真环境。本文聚焦KVM硬件虚拟化的完整技术链——涵盖BIOS固件开关验证、内核模块加载、QEMU加速调用、libvirt配置

weixin_34372728的博客 529

深度解析yuzu模拟器:开源架构如何重新定义跨平台游戏体验

在游戏模拟器技术领域,yuzu作为全球最受欢迎的开源任天堂Switch模拟器,不仅为玩家提供了跨平台游戏体验,更展示了现代模拟器技术的工程实践典范。作为Citra模拟器创建者团队的新作,yuzu采用C++编写,以可移植性为核心设计理念,为Windows、Linux和Android平台提供持续维护的构建版本。 ## 🏗️ 价值主张:开源模拟器的技术哲学与实践意义 ### 核心理念:硬件抽象与平

gitblog_00972的博客 978

Visual C++实战手册:从源代码到工程实践,掌握Windows编程精髓

在Windows平台开发领域,Visual C++(VC++)作为经典的开发工具,其核心价值在于构建高性能、稳定的原生应用程序。它基于C++语言,通过微软基础类库(MFC)等框架,为开发者提供了访问Windows API和系统资源的强大能力。其技术价值体现在对操作系统底层的精细控制、高效的运行时性能以及在工业控制、游戏引擎等领域的不可替代性。随着现代C++标准(如C++11/17)的演进和AI辅助编程工具的兴起,掌握VC++的工程实践能力,特别是如何高效利用源代码案例和解决实际编译部署问题,变得更为关键。例

weixin_33811539的博客 455

Media Temple迁移到DigitalOcean的底层认知重构指南

VPS迁移不是简单的服务器更换,而是从托管服务到可编程基础设施的认知跃迁。其核心在于理解‘托管面板’与‘裸机控制’的本质差异:前者封装了OS层能力(如自动SSL、数据库集群),后者要求用户掌握Linux系统管理、网络配置和API编排等基础能力。技术价值体现在资源确定性、弹性网络和自动化运维上,适用于WordPress重构、多站点托管及CI/CD集成等场景。本文聚焦Media Temple到DigitalOcean Droplet迁移过程中的能力映射、栈复刻与零停机切换,深度解析Control Panel幻觉

dgqvhtlwq472235338的博客 530

Ubuntu 14.04 LAMP+SFTP+DNS生产环境部署全指南

LAMP(Linux+Apache+MySQL+PHP)是Web服务最成熟的基础架构,其核心价值在于组件间经过长期验证的兼容性与稳定性;SFTP作为基于SSH的安全文件传输协议,通过系统级权限控制实现零密码泄露风险的部署通道;DNS则承担着域名解析与流量调度的关键角色,其TTL、NS和A记录的协同配置直接决定网站全球可达性。三者并非孤立存在,而是构成‘运行-交付-访问’闭环的技术铁三角。本文聚焦Ubuntu 14.04这一长期支持版本,详解LAMP组件手动安装要点、SFTP用户权限精细化设计(如webdep

weixin_30239339的博客 317
上一篇: magento2中的js语法-requirejs方式的js语法
下一篇: magento2依赖注入--通过参数的方式实现magento2的依赖注入详解
magento全栈开发
博客等级 码龄11年 195粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值