[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • mehr als 20 Values
Seite 1 von 1

mehr als 20 Values

Verfasst: 6. Nov 2009, 09:23
von mgg
Hallo Redaxouser,

habe das Problem für ein Modul mehr als 20 Variabeln zu brauchen.Nun hab ich mich schon mal versucht hier im Forum schlau zu machen und mein Modul mit der Aktion "rexnames" ergänzt.
Leider habe ich keinen Erfolg damit.
Kann mir wer einen Tip geben?

Verwende REDAXO 4.1

AKTION:
rexnames: beide auf ADD/EDIT
Presave-Action [Wird vor dem Speichern des Moduls ausgeführt]
Postsave-Action [Wird nach dem Speichern des Moduls ausgeführt]

<?php $newname = ""; for ( $c = 0; $c < 99; $c++ ) { if (isset($rexname[$c])) { $newname .= $rexname[$c] . '~~'; } else { $newname .= '~~'; } } if ( isset($REX_ACTION['VALUE'][1]) and $REX_ACTION['VALUE'][1] != '') { $rexname = split('~~', $REX_ACTION['VALUE'][1]); } else { $REX_ACTION['VALUE'][1] = $newname; } ?>
<?php
$newname = "";
for ( $c = 0; $c < 99; $c++ ) {
if (isset($rexname[$c])) { $newname .= $rexname[$c] . '~~'; }
else { $newname .= '~~'; }
}
if ( isset($REX_ACTION['VALUE'][1]) and $REX_ACTION['VALUE'][1] != '') {
$rexname = split('~~', $REX_ACTION['VALUE'][1]);
} else {
$REX_ACTION['VALUE'][1] = $newname;
}
?>

Verfasst: 6. Nov 2009, 15:11
von Cheffchen
Hallo,

erstmal wo her hast die rexname?
Meine sieht irgendwie anders aus?

"Leider habe ich keinen Erfolg damit. Kann mir wer einen Tip geben?"
Wo bei kein Erfolg?

OK jetzt kommt mal mein Test, einfach mal testen ob was Angezeigt wird.
Aktion:
Presave-Action ADD/EDIT

Code: Alles auswählen

<?php $rexname = rex_request("rexname","array"); $newname = ""; for ( $c = 0; $c < 99; $c++ ) { if (isset($rexname[$c])) { $newname .= $rexname[$c] . '~~'; } else { $newname .= '~~'; } } if ( isset($REX_ACTION['VALUE'][1]) and $REX_ACTION['VALUE'][1] != '') { $rexname = split('~~', $REX_ACTION['VALUE'][1]); } else { $REX_ACTION['VALUE'][1] = $newname; } ?>
Postsave-Action ADD/EDIT

Code: Alles auswählen

<?php $rexname = rex_request("rexname","array"); $newname = ""; for ( $c = 0; $c < 99; $c++ ) { if (isset($rexname[$c])) { $newname .= $rexname[$c] . '~~'; } else { $newname .= '~~'; } } if ( isset($REX_ACTION['VALUE'][1]) and $REX_ACTION['VALUE'][1] != '') { $rexname = split('~~', $REX_ACTION['VALUE'][1]); } else { $REX_ACTION['VALUE'][1] = $newname; } ?>
Modul die Aktion Speichern und
Eingabe:

Code: Alles auswählen

<?php $rexname = split("~~","REX_VALUE[1]"); $GLOBALS['rexname'] = $rexname; ?>

<input type="text" name="rexname[0]" value="<?php if (isset ($rexname[0])) { print $rexname[0]; }?>" />

<input type="text" name="rexname[15]" value="<?php if (isset ($rexname[15])) { print $rexname[15]; }?>" />

<input type="text" name="rexname[30]" value="<?php if (isset ($rexname[30])) { print $rexname[30]; }?>" />
Ausgabe:

Code: Alles auswählen

<?php $rexname = split("~~","REX_VALUE[1]"); $GLOBALS['rexname'] = $rexname; ?>

<?php if (isset ($rexname[0])) { print $rexname[0]; } ?>
<?php if (isset ($rexname[0])) { print $rexname[15]; } ?>
<?php if (isset ($rexname[0])) { print $rexname[30]; } ?>
Das Modul jetzt einbinden und mal die 3 Felder ausfüllen und im Frontent mal schauen ob diese wieder Angezeigt werden.

Cheffchen

Verfasst: 7. Nov 2009, 09:50
von mgg
Guten Morgen...im warsten Sinn des Wortes :lol:

Deine Antwort hat bei mir die Bretter vor den Augen entfernt.
Es lag daran das ich versuchte REX_VALUES[xx] anzusprechen statt $rexname[xx]...na ja, das ist's nach VALUE[20] eben aus.
Jedenfalls einen herzlichen Dank für die wirklich rasche Antwort und das rexnames Testmodul ist ja auf die schnelle auch gut zu gebrauchen...
:lol:

Liebe Grüße
Manfred

Re: mehr als 20 Values

Verfasst: 7. Okt 2015, 11:48
von MAZup!
Danke Cheffchen! :-)

Re: mehr als 20 Values

Verfasst: 7. Okt 2015, 12:26
von Thomas.Blum
Hej,

die rexnames brauchst nicht mehr verwenden. Man kann REX_VALUE auch als array nutzen.

Einfaches Bsp.

Moduleingabe:

Code: Alles auswählen

<?php

$values = array();
$values[1] = rex_var::toArray('REX_VALUE[1]');
$values[1]['media_1'] =<<<EOF
REX_MEDIA_BUTTON[1]
EOF;
$values[1]['link_1'] =<<<EOF
REX_LINK_BUTTON[1]
EOF;


$values[2] = rex_var::toArray('REX_VALUE[2]');
$values[2]['media_1'] =<<<EOF
REX_MEDIA_BUTTON[2]
EOF;
$values[2]['link_1'] =<<<EOF
REX_LINK_BUTTON[2]
EOF;


for ($i = 1; $i <= count($values); $i++) {

    echo '
        <table class="rex-table">
            
            <tr class="rex-title">
                <th colspan="2">Medien</th>
            </tr>
            
            <tr>
                <th>Bild</th>
                <td>' . $values[$i]['media_1'] . '</td>
            </tr>

            <tr class="rex-title">
                <th colspan="2">Text</th>
            </tr>

            <tr>
                <th>Überschrift</th>
                <td><input type="text" name="VALUE[' . $i . '][h1]" value="' . (isset($values[$i]['h1']) ? $values[$i]['h1'] : '') . '" /></td>
            </tr>

            <tr>
                <th>Fließtext</th>
                <td><textarea name="VALUE[' . $i . '][text]" class="rex-markitup lead" data-buttonset="appsimple">' . (isset($values[$i]['text']) ? $values[$i]['text'] : '') . '</textarea></td>
            </tr>
            

            <tr class="rex-title">
                <th colspan="2">Verlinkung</th>
            </tr>                
            
            <tr>
                <th>interner Link</th>
                <td>' . $values[$i]['link_1'] . '</td>
            </tr>

        </table>';


}

?>

Modulausgabe

Code: Alles auswählen

<?php
$values = array();
$values[1] = rex_var::toArray('REX_VALUE[1]');
$values[1]['media_1'] = 'REX_MEDIA[1]';
$values[1]['link_1']  = 'REX_LINK_ID[1]';

$values[2] = rex_var::toArray('REX_VALUE[2]');
$values[2]['media_1'] = 'REX_MEDIA[2]';
$values[2]['link_1']  = 'REX_LINK_ID[2]';

foreach ($values as $value) {
    echo $value['media_1'];
    echo $value['h1'];
    echo $value['text'];
    echo $value['link_1'];
}
?>

vg Thomas

Re: mehr als 20 Values

Verfasst: 7. Okt 2015, 12:30
von MAZup!
Hey cool.

Danke Thomas! :-)

Gruß Matthias