Undefined constant?

Mit Smarty habe ich mich nie beschäftigt. Aber hier in dem Block geht es ja um die Zahlungsmethoden und ich gehe mal davon aus, daß die Konstanten gesetzt werden, wenn vor der Kasse die Zahlungsmethoden benötigt werden.
Wo das aber ist, kann ich dir auch nicht sagen. Wenn du das wirklich wissen willst, würde ich mal bei den Entwicklern nachfragen.

Für mich sind das aber Bereiche, die mich nicht wirklich interessieren, denn da gibt es für mich nichts zu ändern. Ich habe da bis jetzt nur in verschiedenen Versandmodulen rumgepfuscht.
 
Ok danke ich Poste mal den ganzen Code zu der besagten Zeile.

if (!$box_smarty->is_cached(CURRENT_TEMPLATE.'/boxes/box_miscellaneous.html', $cache_id) || !$cache) {

$payModules = explode(';', MODULE_PAYMENT_INSTALLED);
$payModules = str_replace(array('paypalcart','.php'), array('',''), $payModules);
foreach ($payModules as $payModule) {
if (constant(strtoupper('MODULE_PAYMENT_' . $payModule . '_STATUS')) == 'True') {
include_once (DIR_WS_LANGUAGES . $_SESSION['language'] . '/modules/payment/' . $payModule . '.php');
$payments[] = array(
'NAME' => constant(strtoupper('MODULE_PAYMENT_' . $payModule . '_TEXT_TITLE')),
'IMG' => (strpos($payModule, 'paypalclassic') !== false ? 'paypal' : $payModule),
);
}
}
$box_smarty->assign('payments', $payments);

Wird in diesem teil nicht di constante als arry definiert?

$payments[] = array
 
Setz doch Codeausschnitte als PHP Codeblock in deine Posts und rück die Zeilen ein. Dann läßt sich das viel leichter lesen.

Ansonsten ist $payments schon ein Array, es ist aber keine Konstante.
 
PHP:
$payModules = explode(';', MODULE_PAYMENT_INSTALLED);
MODULE_PAYMENT_INSTALLED wird in ein Array umgewandelt

PHP:
$payModules = str_replace(array('paypalcart','.php'), array('',''), $payModules);
Hier wird im Array etwas ersetzt

PHP:
foreach ($payModules as $payModule) {
Schleife über das Array

PHP:
if (constant(strtoupper('MODULE_PAYMENT_' . $payModule . '_STATUS')) == 'True')
Wenn hier der Fehler auftritt, kann das nur damit zusammenhängen, das im Array ein leerer Wert steht, warum auch immer. Dadurch hat $payModule keinen Wert und es kommt zu MODULE_PAYMENT__STATUS und diese Konstante gibt es dann nicht.

Ich würde mal testweise diese Zeile vor dem explode einbauen:
PHP:
echo "<pre>"; var_dump(MODULE_PAYMENT_INSTALLED); die ("</pre">);
Da wird vermutlich mindestens einmal doppelte Semikolons vorkommen oder ein Semikolon am Ende stehen.
 
Zuletzt bearbeitet:
Wenn du an den Zahlungsmodulen nichts umgebaut hast, dürfte da eigentlich nichts passieren. Ich habe in letzter Zeit einen neuen Shop aufgesetzt und einen alten von 1.0.6 auf aktuell hochgerüstet. Da gab es keinerlei Probleme.

Aber die Ausgabe ist bestimmt keine schlechte Idee.
 
Zurück