2012-04-04 3 views
0

Wir haben eine CakePHP-App läuft auf 2.0 und wir scheinen einige Probleme mit der Codierung mit Firefox zu haben.CakePHP namens paramaters in FireFox Causing Probleme

Die URL, auf die wir zugreifen, lautet/newcms/core/users/index/conditions [Benutzer] [group_id]: 6 um einen Filter in out cms system anzuwenden.

In allem aber FireFox wir folgendes auf Anfrage Objekt

[params] => Array 
     (
      [plugin] => core 
      [controller] => users 
      [action] => newcms_index 
      [named] => Array 
       (
        [conditions] => Array 
         (
          [User] => Array 
           (
            [group_id] => 6 
           ) 

         ) 

       ) 

      [pass] => Array 
       (
       ) 

      [prefix] => newcms 
     ) 

Was ist richtig erhalten und alles funktioniert gut, wenn wir goto die gleiche URL in FireFox wir

[params] => Array 
     (
      [plugin] => core 
      [controller] => users 
      [action] => newcms_index 
      [named] => Array 
       (
        [conditions%5BUser%5D%5Bgroup_id%5D] => 6 
       ) 

      [pass] => Array 
       (
       ) 

      [prefix] => newcms 
     ) 

bekommen Ich habe versuchte URL, die den benannten Zustandswert aber ohne Glück kodiert.

Irgendwelche Vorschläge?

+0

Warum machen Sie die eckigen Klammern als Teil der URL-Parameter? Natürlich wird es URL-codiert. Warum nicht benannte Parameter verwenden? –

+0

@Barry, er * verwendet * benannte Parameter, aber er versucht, sie verschachtelt zu machen. Ich bin mir nicht sicher, ob das möglich ist. – bfavaretto

+0

@bfavaretto das ist nicht wahr, er übergibt sie als Teil der URL direkt. SCHLECHT. –

Antwort

0

Gut nach ein bisschen Graben und Spielen um die neueste Version von Kuchen in GitHub hat dieses FF Problem behoben (https://github.com/cakephp/cakephp/commit/e6905b44c3d4512b6989c59a1489bc983d88bcdc).

Es gibt nichts Falsches daran, eckige Klammern im URI zu übergeben, es war nur ein Problem mit der Art und Weise, wie FF sie anders codiert als die anderen Browser.

2

Es ist wahrscheinlich keine gute Idee, Klammern und eine Array-Struktur in Ihrer URL zu verwenden.

Warum etwas nicht nur verwenden, wie dies

/newcms/core/users/index/user_group:6 

dann die Daten in der Steuerung verarbeiten ?:.

+0

Wir können das wirklich nicht tun, da es für ein cms ist, das Filter dynamisch erzeugte. In Nicht-Firefox-Browsern wird das gesamte Parsing im Kern durchgeführt und wir erhalten den Namen parameter als ein Array zurück, das ideal ist. Wenn es keinen Weg in FF gibt, müssen wir vielleicht nur etwas wie Pipes verwenden, um die eckigen Klammern zu ersetzen und dann das im App-Controller zu dekodieren ... nicht ideal, aber ... dummes FF – Dean