Pergunta

Estou usando o criador de módulo final.E eu criei uma entidade.
E um dos atributos é o atributo do produto (SKU).

É criado o SKU como um atributo no back-end, mas não é vinculativo à coleção de SKU do produto.

A função a seguir retorna uma matriz nula.

public function getAllOptions($withEmpty = true, $defaultValues = false){
    $source  = Mage::getModel('eav/config')->getAttribute('catalog_product', 'sku');
    return $source->getSource()->getAllOptions($withEmpty, $defaultValues);
} 
Foi útil?

Solução

Os atributos suspensos de suas entidades personalizadas provenientes de atributos de produto funcionam somente com atributos de produto suspensos ou de seleção múltipla.
SKU é um atributo de texto.
Funcionará com atributos do produto, como cor ou país de fabricação, mas não com sku, nome ou peso, etc.
Não há nenhuma verificação feita ao criar o módulo para ver se o atributo do produto é um menu suspenso ou multisseleção porque você pode criar um módulo usando UMC em uma instância que não contém o atributo desejado, mas usá-lo em outra instância que o tenha .Ou você pode adicionar o atributo do produto posteriormente.

[EDITAR]
Se quiser usar o SKU em um menu suspenso, você precisará modificar o método na sua pergunta.
Algo assim:

protected $_options = null;
public function getAllOptions($withEmpty = true, $defaultValues = false){
    if (is_null($this->_options)) {
        $collection = Mage::getModel('catalog/product')->getCollection();
        $this->_options = array();
        foreach ($collection as $product) {
            $this->_options[] = array('value' => $product->getSku(), 'label' => $product->getSku());
        }
    }
    $skus = $this->_options;
    if ($withEmpty) {
        array_unshift($skus, array('label' => '', 'value'=>''));
    }
} 

Como o SKU é um atributo de texto e as opções para sua entidade são criadas por padrão com o tipo int você precisa alterar o tipo do seu atributo de entidade para text

Mas aconselho que você faça isso apenas se tiver alguns produtos em seu site.Se você tiver mais de 300-400 produtos, isso pode acabar prejudicando o desempenho, porque você terá que examinar a coleção de produtos cada vez que usar esse atributo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top