![]() |
Re: Bedingte Anweisung in Schleife
Moin Michael,
ich habe da meist eine andere Vorgehensweise (Beispiel):
Delphi-Quellcode:
Dadurch hat man dann direkt Zugriff auf Werte, ohne Funktionen bemühen zu müssen, und kann recht flexibel die Daten ändern, speziell, wenn sie aus einer Datei stammen.
type
TcsFieldTypes = (ftName,ftDesc,ftKey); const // Können auch aus einer Konfigurationsdatei stammen _asFieldNames : array[TcsFieldTypes] of string = ('Name','Desc','Key'); _asDefaults : array[TcsFieldTypes] of string = ('DefaultName','DefaultDesc','DefaultKey'); Wahlweise kann man natürlich auch eine Funktion nehmen, um die Vorgabewerte auszulesen. Wenn man verschiedene Datentypen braucht, geht es auch mit Variants. |
Re: Bedingte Anweisung in Schleife
OK, da müsste ich aber den Code an drei Stellen ändern, wenn sich was ändert. Und das ist nicht schön. Und ich werde auch unterschiedliche Models haben mit gleichem Feld aber unterschiedlichen Vorgabewerten.
Aber wie gesagt, letzt endlich suche ich eine Lösung für PHP. Das Delphi Beispiel war nur zur Veranschaulichung. |
Re: Bedingte Anweisung in Schleife
Hey Michael,
So sollte es genauso gehen, wie Du wolltest :) Ich musste allerdings noch ein paar Modifikationen im Gegensatz zu meiner Ursprungsfassung machen, dafür habe ich das ganze etwas weiter kommentiert ;)
Code:
Viele Grüße
<?php
// "globaler" Standardwert, den zunächst grundsätzliche alle // Felder erhalten sollen $globalDefaultValue = 'Standardwert'; // Assoziatives Array // Es enthält zunächste _alle_ "Produkt"-Felder // Wo ein abweichender Standardwert existiert für ein Feld, // wird dieser mit 'feld' => 'wert' angegeben, ansonsten 'feld' => null $productFields = array( 'name' => 'Name', 'desc' => null, 'key' => 'Hubba', 'foo' => null, 'bar' => null, 'lolli' => null, 'pop' => 'Bubba'); $categoryFields = array( 'name' => 'ajsdbv', 'kuckuck' => 'jsgad', 'feldMitStandardWert' => null); // Zum Testen wird hier einfach "Produkt" als Modell festgelegt. $model = "Produkt"; switch ($model){ case 'Produkt': foreach($productFields as $fieldName => $customDefault){ // Standardwert ist der "globale", falls der "abweichende" Standard- // wert im Felder-Array mit "null" angegeben wurde. $defaultValue = $customDefault != null ? $customDefault : $globalDefaultValue; echo "$fieldName: $defaultValue "; } break; case 'Kategorie': foreach($categoryFields as $fieldName => $customDefault){ // Standardwert ist der "globale", falls der "abweichende" Standard- // wert im Felder-Array mit "null" angegeben wurde. $defaultValue = $customDefault != null ? $customDefault : $globalDefaultValue; echo "$fieldName: $defaultValue "; } break; } ?> |
Re: Bedingte Anweisung in Schleife
Besten Dank. Am Montag werde ich sehen, ob es so klappt wie gewünscht.
|
Re: Bedingte Anweisung in Schleife
Hat wunderbar geklappt. Ich musste allerdings noch ein paar Modifikationen vornehmen:
Code:
$formExt = new formExtension($modelClass);
switch($modelClass) { case 'Product': if (!$doneSetDefValues) { $doneSetDefValues = $formExt->setDefValues($productFields); } break; case 'Salutation': if (!$doneSetDefValues) { $doneSetDefValues = $formExt->setDefValues($salutationFields); } break; default: echo "\t\techo \$extendedForm->input('{$modelClass}.{$field}');\n"; } break;
Code:
Vielen Dank noch mal.
public function setDefValues($fields) {
$globalDefaultValue = ''; foreach ($fields as $fieldName => $customDefault) { $defaultValue = $customDefault != null ? $customDefault : $globalDefaultValue; echo "\t\techo \$extendedForm->input('".$this->modelClass.".".$fieldName."', array('default' => '".$defaultValue."'));\n"; } return true; } |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz