Como criar atributos de extensão no Magento 2
10341 단어 phpbraziliandevstutorialmagento2
컨텍스트리잔도
O que é um atributo de extensão?
Os atributos no Magento 2 são propriedades das entidades que auxiliam na Variadede de opções. Os modulos personalizados não podem alterar as interface das entidades nativas, entretanto, a maioria das interface das entidades possuem um funcionalidade chamada atributos de extensão. Para saber se a entidade possui atributos de extensão, basta observar se a mesma estende da interface
\Magento\Framework\Api\ExtensibleDataInterface
e possui os métodos getExtensionAttributes()
e setExtensionAttributes()
.Código para criar um atributo
extension_attributes.xml
Para criar os atributos de extensão é necessário criar um arquivo chamado
extension_attributes.xml
que deve seguir a estrutura de 파스타\{Vendor}\{Module}\etc\extension_attributes.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Api/etc/extension_attributes.xsd">
<extension_attributes for="{Vendor}\{Module}\Api\Data\{EntityName}Interface">
<attribute code="{attr_name_object}" type="{Vendor}\{Module}\{Directory}\{Class}" />
<attribute code="{attr_name_string}" type="string" />
<attribute code="{attr_name_boolean}" type="bool" />
<attribute code="{attr_name_integer}" type="int" />
<attribute code="{attr_name_float}" type="float" />
<attribute code="{attr_name_array}" type="{type}[]" />
<attribute code="{attr_name_array}" type="{Vendor}\{Module}\Api\Data\{EntityName}Interface[]">
<resources>
<resource ref="{Vendor}_{Module}::{acl_path}" />
</resources>
<join reference_table="{table_name}" reference_field="{column_name}" join_on_field="{interface_field}">
<field>{field_name}</field>
</join>
</attribute>
</extension_attributes>
</config>
O nó
<extension_attributes>
só possui um atributo, o for
, que indicará qual a entidade que receberá os novos atributos de extensão e que será implementada a interface \Magento\Framework\Api\ExtensibleDataInterface
e possuir os métodos getExtensionAttributes()
e setExtensionAttributes()
.O nó
<attribute>
é filho do nó <extension_attributes>
e é obrigatório, este possui o atributo code
, que será o nome do atributo (deverá ser escrito em snake case) e o atributo type
, que indicará o tipo do atributo .O nó
<resources>
é filho do nó<attribute>
é opcional e não possui atributos, apenas pode ter o nó filho<resource>
, já este possui o atributoref
, que referencia a seção a um recurso ACL para fornecer permissões das 구성.O nó
<join>
é filho do nó <attribute>
é opcional e possui o atributo reference_table
, que faz uma operação de join com a tabela referenciada neste atributo, com o valor da coluna referenciada no atributo reference_field
e join_on_field
é a coluna da tabela associada a interface.O nó
<field>
é filho do nó <join>
e é obrigatório quando este for inserido. Este nó não possui atributos e nem outros nós filhos, apenas valor, que especifica a propriedade da tabela reference que irá unir a interface definida.Acessando os atributos de extensão
Assim que criar o arquivo
extension_attributes.xml
já fica disponível para acessar e definir valores dos atributos via métodos mágicos, apenas adicionando o prefixo get
및 set
nos nomes definidos dos atributos.$extAttributes = $entityName->getExtensionAttributes();
$extAttributes->getAttrNameObject();
$extAttributes->getAttrNameString();
$extAttributes->getAttrNameBoolean();
$extAttributes->getAttrNameInteger();
$extAttributes->getAttrNameFloat();
$extAttributes->getAttrNameArray();
$extAttributes->setAttrNameObject($objectValue);
$extAttributes->setAttrNameString($stringValue);
$extAttributes->setAttrNameBoolean($booleanValue);
$extAttributes->setAttrNameInteger($integerValue);
$extAttributes->setAttrNameFloat($floatValue);
$extAttributes->setAttrNameArray($arrayValue);
인터페이스 da entidade
추가 인터페이스는 Magento 2의 코드 확장 확장에 대한 속성이며 인터페이스의 기본 구성 요소입니다
\Magento\Framework\Api\ExtensibleDataInterface
.<?php
namespace {Vendor}\{Module}\Api\Data;
use Magento\Framework\Api\ExtensibleDataInterface;
interface {EntityName}Interface extends ExtensibleDataInterface
{
}
피날리잔도
Valores entre chaves (
{test}
) devem ser alterados na implementação do código.
Habilitando as alterações
Apague os arquivos que são gerados na compilação do Magento e execute o comando PHP para gerar a configuração das injeções de dependsência e todas as class ausentes que precisam ser geradas (프록시, 인터셉터 등) e para limpar todos os caches de armazenamento em cache do 프로세서.
rm -rf var/generation/
rm -rf generated/
php bin/magento setup:di:compile
php bin/magento cache:clean
php bin/magento flush
Diretórios e Arquivos
Segue a lista de diretórios e arquivos que devem ser criados.
- app/
- code/
- {Vendor}/
- {Module}/
- etc/
- module.xml
- extension_attributes.xml
- registration.php
- composer.json
Reference
이 문제에 관하여(Como criar atributos de extensão no Magento 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/santanaluc94/como-criar-atributos-de-extensao-no-magento-2-3fpi텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)