Où est l'ID d'option de l'option nouvellement ajoutée pour le produit du bundle?
-
30-10-2019 - |
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