[gelöst] Commerce Webform: Fatal error: Call to undefined function _productfield_products()
am 11.08.2017 - 09:06 Uhr in
Hallo,
ich hoffe dass es hier im Forum Leute gibt, die ebenfalls dieses Modul einsetzen und mir evtl. weiterhelfen können.
Nach vollenden des Checkout-Prozesses über PayPal Express wird folgender schwerer PHP Fehler ausgelöst:
Fatal error: Call to undefined function _productfield_products() in /drupal/sites/all/modules/commerce_webform/commerce_webform.module on line 341
Kann jemand hiermit etwas anfangen?
Ich habe mir die Zeile 341 angesehen und da wird diese Funktion innerhalb einer foreach-Schleife aufgerufen - definiert wird sie tatsächlich nicht, zumindest nicht in dieser Datei. In der Datei "productfield.inc" wird die Funktion definiert.
Diese Datei wird innerhalb der module-Datei in zwei Funktionen integriert:
(Zeile 241 - 263)
<?php
/**
* Implements hook_webform_component_info().
* Define the commerce webform field
*/
function commerce_webform_webform_component_info() {
$components = array();
$components['productfield'] = array(
'label' => t('Commerce product skus'),
'description' => t('List commerce products linked to this webform.'),
'features' => array(
'default_value' => FALSE,
'email' => TRUE,
'email_address' => FALSE,
'email_name' => FALSE,
'conditional' => TRUE,
),
'conditional_type' => 'productfield',
'file' => 'productfield.inc',
);
return $components;
}
?>
(Zeile 192 - 210)
<?php
/**
* Implements hook_theme().
*/
function commerce_webform_theme() {
return array(
'webform_display_productfield' => array(
'render element' => 'element',
'file' => 'productfield.inc',
),
'commerce_webform_product_display' => array(
'variables' => array(
'product' => NULL,
'price' => array(),
'component' => array(),
),
'file' => 'productfield.inc',
),
);
}
?>
Muss die Datei eventuell als "require" zusätzlich integriert werden, damit die Funktion aufgerufen werden kann?
Die betreffende Zeile (341 in der .module-Datei), die vom System angemahnt wird ist folgende:
<?php
//[...]
foreach (_productfield_products($component) as $product_id_option => $details) {
//[...]
?>
Und die Funktion ist wie folgt in der Datei productfield.inc definiert (Zeile 1171-1205):
<?php
/**
* Get a list of commerce products avaiable for selection.
*
* @param array $component
* Webform productfield component
*
* @return array
* An array of commerce_product objects available for
* selection with this component.
*/
function _productfield_products($component) {
$items = isset($component['extra']['items']) ? $component['extra']['items'] : array();
$product_type = $component['extra']['product_type'];
$product_ids = array();
if (empty($product_type)) {
// Build an array of product IDs from this field's values.
foreach ($items as $item) {
$product_ids[] = $item['product_id'];
}
}
else {
$query = new EntityFieldQuery();
$result = $query->entityCondition('entity_type', 'commerce_product')
->entityCondition('bundle', $product_type)
->execute();
if (!empty($result['commerce_product'])) {
$product_ids = array_keys($result['commerce_product']);
}
}
return commerce_product_load_multiple($product_ids);
}
?>
Kann mir hier jemand weiterhelfen?
Vielleicht reichen ja auch nur sehr gute Kenntnisse in PHP und Modul-Entwicklung aus, um den Fehler zu erkennen.
Ich konnte es leider noch nicht, zu wenig Erfahung in solchen Dingen.
Jedenfalls schonmal vielen Dank im Voraus für eure Unterstützung.
Hier noch die Details zu den eingesetzten Versionen etc.:
Fehler tritt auf in beiden aktuellen Versionen des Moduls: 7.x-2.0-beta2 und 7.x-2.x-dev
Bei beiden Checkoutmöglichkeiten: Direkt über PayPal oder über den "langsameren" Checkout Prozess mit Klick auf den Submit-Button "Checkout"
Andere Module & Drupal Core:
Drupal: 7.56
Commerce: 7.x-1.13
Webform: 7.x-4.15
System-Spezifikationen:
PHP: 5.6.22-pl0
MySQL: 5.6.33
Webserver: Apache
- Anmelden oder Registrieren um Kommentare zu schreiben
Hi,die Fehlende
am 11.08.2017 - 10:05 Uhr
Hi,
die fehlende Funktion
Fatal error: Call to undefined function _productfield_products()
Sollte eigentlich in productfield.inc im commerce_webform Modul enthalten sein. Schau mal hier ganz unten:
http://cgit.drupalcode.org/commerce_webform/tree/productfield.inc?id=89c...
Um eine Inc in einem Modul zu laden:
module_load_include('inc', 'commerce_webform', 'productfield'); // Load ...
https://api.drupal.org/api/drupal/includes%21module.inc/function/module_...
MfG
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Vielen Dank Robert! Das war
am 11.08.2017 - 16:04 Uhr
Vielen Dank Robert! Das war die Lösung!
Muss ich bei etwaigen Updates nur daran denken, das dann wieder einzufügen.