xForm redirect bug

Jede Art von Fehler die REDAXO betreffen.

xForm redirect bug

Beitragvon ovo » 13. Jul 2011, 22:38

Wenn ich der xForm folgendes Redirect "rex_getUrl(10,null,Array('a'=>1,'b'=>2))" übergebe, werden die angehängten Parameter a und b nicht mit übergeben
Der Grund:
Code: Alles auswählen
class rex_xform_action_redirect extends rex_xform_action_abstract
{
   function execute()
   {
...
      $u = $this->getElement(2);
      $u1 = (int) $u;
      
      if($u == $u1) #die beiden sind gleich und es wird immer eine interne Url gebaut in der die besagten Parameter fehlen.
      {
         // id -> intern article
         $url = rex_getUrl($u,'','',"&");
      }else
      {
         // extern link
         $url = $u;
      }

LG
Stefan
ovo
 
Beiträge: 40
Registriert: 13. Okt 2010, 11:56

Re: xForm redirect bug

Beitragvon jeandeluxe » 13. Jul 2011, 23:11

ovo hat geschrieben:Wenn ich der xForm folgendes Redirect "rex_getUrl(10,null,Array('a'=>1,'b'=>2))" übergebe,

Versteh ich nicht ganz.. als Eingabe dieser action?

Code: Alles auswählen
      
if($u == $u1) #die beiden sind gleich und es wird immer eine interne Url gebaut in der die besagten Parameter fehlen.
{
  // id -> intern article
  $url = rex_getUrl($u,'','',"&");
}else
{
  // extern link
  $url = $u;
}


$u == $u1 tritt nur ein, wenn man fürs 2. Feld ("Artikel-Id oder Externer Link") eben eine Article_id angegeben hat.. denn ein Integer Wert, den man nach (int) castet bleibt sich gleich.. irgendein string - d.h. eine externe URL, dann eben nicht.. das ist schlicht ein switch um die Eingabe einzuordnen. Wenn es eine interne URL ist, dann wird diese per rex_getUrl aufgerufen, jedoch wird lediglich die article_id übergeben.. ohne Parameter, das ist garnicht vorgesehen:

Code: Alles auswählen
$url = rex_getUrl($u,'','',"&");


hth,
Jan
mark your solved threads [SOLVED]™ promotion tour.. | Redaxo API Docu | rexdev.de | "You start with some money.."
IT'S A MARATHON. NOT A SPRINT. UNLESS IT IS A SPRINT, THEN SPRINT!
Benutzeravatar
jeandeluxe
 
Beiträge: 1933
Registriert: 29. Sep 2005, 09:50
Wohnort: Hamburg

Re: xForm redirect bug

Beitragvon ovo » 14. Jul 2011, 09:01

Hallo Jan,
ja, dachte ich mir auch so wie Du sagst - aber probier mal mein konkretes Beispiel:

$u = 'index.php?article_id=24&clang=0&action=bstlg&usermode=4';
echo $u; // Ausgabe: index.php?article_id=24&clang=0&action=bstlg&usermode=4'

$ul = (int) $u;
echo $ul; // Ausgabe: 0

if ( $u == $ul ) echo p('true');
else echo p('false');
// Ausgabe: true !!!

if ( $u === $ul ) echo p('true');
else echo p('false');
// Ausgabe: false !!!

Ich bin relativ neu in PHP und eigentlich gewohnt, dass der Vergleich von Variablen verschiedener Typen mit einem Compiler- oder spätestens einem Laufzeitfehler quittiert wird.
Anscheinend wird beim Vergleich mit "==" der String automatisch zu einem Int gecastet und dann lautet der Vergleich eben "0 == 0".

So funkts bei mir jedenfalls
class rex_xform_action_redirect extends rex_xform_action_abstract
...
$u = $this->getElement(2);
$u1 = (int) $u;
if($u === $u1 )
{
...
LG
Stefan
ovo
 
Beiträge: 40
Registriert: 13. Okt 2010, 11:56


Zurück zu Bugs [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast