Question

J'ai donc un module, que j'utilise pour définir un champ personnalisé dans les options de bundle. J'ai implémenté mon module avec succès. Cependant, je suis arrivé à une situation dans laquelle je ne peux pas passer à autre chose sans obtenir de réponse pour cela problème.

Dans mon module, afin d'enregistrer des données sur mes champs personnalisés, j'observe <catalog_product_save_after />. Dans ma table personnalisée, avec mon ID de champ personnalisé et son contenu, je veux enregistrer option_id et store_id. Les choses fonctionnent bien, pour les produits qui ont déjà regroupé des options. Pour de tels produits, je peux obtenir option_id et store_id. Mais pour les options nouvellement créées pour le produit, option_id Le champ semble vider. Je ne sais pas comment obtenir Option_id.

Méthode que j'utilise pour obtenir les détails de l'option: $product->getBundleOpitonsData()

Quand écho cette, J'ai un résultat comme ça.

Array
(
[7] => Array
    (
        [description_id] => 
        [description_new] => 
        [title] => bla bla title
        [description] => bla bla description
        [option_id] => 
        [delete] => 
        [type] => select
        [required] => 1
        [position] => 
    )
 [1] => Array
    (
        [description_id] => 1
        [description_new] => no
        [title] => test
        [description] => new description
        [option_id] => 30
        [delete] => 
        [type] => select
        [required] => 1
        [position] => 0
    )

 ---------- 
)

Comme vous pouvez le voir, pour l'option nouvellement créée (array[7]), option_id Le champ est vide. Mais pour une option déjà existante (array[1]), option_id Existe.

Noter : Dans Mage_Bundle module, il y a un observateur pour l'événement <catalog_product_prepare_save />. Dans l'obsever mentionné, nous pouvons voir que les options sont définies.

public function prepareProductSave($observer)
{
    $request = $observer->getEvent()->getRequest();
    $product = $observer->getEvent()->getProduct();

    if (($items = $request->getPost('bundle_options')) && !$product->getCompositeReadonly()) {
        $product->setBundleOptionsData($items);
    }
}

Si cela est correct, avant d'invoquer mon observateur, l'option se déroule via l'observateur du bundle. Alors Pourquoi option_id Le champ est vide pour une nouvelle option?

S'il vous plaît, aidez-moi mes amis. Je ne peux pas continuer sans votre aide. Attendre avec impatience vos repres

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top