Comment puis-je appeler une fonction d'un module dans un autre module? Je veux appeler la fonction uc_stock_adjust()
de uc_stock.module dans mon propre module personnalisé. C'est possible?
Voici mon code jusqu'à présent:
function my_module_node_presave($node){
if($node->type == 'add_stock') {
$stock_value = $node->field_stock_value['und'][0]['value'];
$sku = $node->field_sku['und'][0]['value'];
if (module_exists('uc_stock') && function_exists('uc_stock_adjust')) {
uc_stock_adjust($sku, $stock_value);
}
}
}
Je souhaite ajouter et supprimer des stocks de produits en utilisant la référence uc_stock_adjust()
, qui est définie dans uc_stock.module, dans mon module personnalisé. Mais quand j'essaie le code ci-dessus, cela ne fonctionne pas.
Cela donne une erreur, et l'erreur est:
Remarque: Variable non définie: sku dans my_module_node_presave () (ligne 29 de\sites\all\modules\my_module\my_module.module)
Pour appeler la fonction d'un module dans un autre module:
Si la fonction n'est pas dans le fichier .module, appelez module_load_include ()
//Load node.admin.inc from the node module
module_load_include('inc', 'node', 'node.admin');
Appeler la fonction depuis l'autre module
function_you_want_to_call();
Voir module_invoke () . Cela appelle une fonction (hook) dans un module spécifié.
Le hook donné uc_stock_adjust()
peut donc être appelé par: module_invoke('uc_stock', 'adjust');
. (Notez que cela est dû au fait que la fonction suit Drupal conventions de module_name_function_name).
Si vous le souhaitez, des arguments supplémentaires peuvent également être passés aux paramètres d'une fonction avec: module_invoke('uc_stock', 'adjust', $first_param_to_pass, $second_param_to_pass, $etc);
Undefined variable: sku
signifie que vous n'avez pas déclaré de valeur pour la variable $sku
. Avez-vous effectué le débogage pour vous assurer que $node->field_sku['und'][0]['value']
sort une valeur?