2009-07-27 7 views
1

Normalerweise benenne ich meine db-spezifischen Felder in meinen Formularen wie diesem "Objektname [Spaltenname]", ich kann nicht auf diese Werte zugreifen mit $ this-> input-> post ('objectname [columnname]'), was mache ich? Es gibt keine Chance in der Hölle im Rename 100 + Formularfelder .. Ich bin eigentlich Abneigung CI, es ist wirklich in den Weg des Fortschritts durch die Änderung der de facto PHP-Normen ...codeigniter associative array in post

+0

Welche Version von CI verwenden Sie? POST-Arrays wurden seit 1.7 unterstützt http://codeignither.com/forums/viewthread/89251/ – jimyi

+0

möglicherweise sie 1.7 verwendet, ist –

Antwort

2

habe ich diesen Beitrag, während für ein ähnliches Problem suchen, sondern arbeitete einen CI Ausweg, es zu tun, sorry, wenn ich es bin wieder zu beleben, aber es ist ziemlich hoch auf den Google Suchergebnissen angezeigt wird.

// Load the 'array' helper 
$this->load->helper('array'); 
// Use the 'element' function to return an element from the array 
echo element('ColumnName', $this->input->post('ObjectName')); 

Hoffe das hilft jedem, der hier in der Zukunft kommt.

0

Ich scheint, ich kann mich verlassen die $ _POST var, aber ich dachte, das wurde zurückgesetzt?

+1

CI zerstört die Variable $ _GET, nicht $ _POST. – jimyi

11

Und haben Sie $_POST['objectname[columnname]'] oder $_POST['objectname']['columnname'] verwendet?

$obj = $this->input->post('objectname'); 
echo $obj['columnname']; 

Haben Sie das Äquivalent für die letztere

versucht?

Wenn es funktioniert, können Sie Ihren eigenen Helfer schreiben, der wie retreive.

+0

toll, danke für den Tipp Kumpel! – brndnmg

+2

kein Problem.Wenn es dein Problem löst, kannst du die Antwort akzeptieren? damit jeder, der später mit dem gleichen Problem kommt, es sieht? –

+0

Ist das die richtige Art, dass Codeigniter es tut? –

-6

Ich ging mit dem $ _POST [ ‚objektname‘] [ ‚colname‘] Option, wie ich in der Regel auch tun, obwohl dies wahrscheinlich nicht der CI Weg ist ..

+2

Es funktioniert, aber es ist nicht die CI-Art und vermeidet alle möglichen Dinge wie globale XSS-Reinigung. –

0

Sie können die Post-Array als ein Objekt geworfen Verwenden Sie die Methodenverkettung, um Sub-Arrays (jetzt Eigenschaften) zurückzugeben, indem Sie die Methode von PHP 5.3 verwenden, die alle auf einer Zeile verkettet.

Erweitern Sie die Eingabeklasse, indem Sie eine Klasse namens MY_Input erstellen, und fügen Sie die erweiterte Klasse in den Ordner application/core ein. CI 2.0 verwendet automatisch die erweiterte Klasse mit dem Präfix MY_, und Sie können Methoden zu dieser neuen Klasse hinzufügen. Das Erweitern der Eingabeklasse ist sauberer als das Erstellen von Helfern.

Mit dieser Methode wird das Post-Array oder ein verschachteltes Array (ein Sub-Array unter dem Parent) als Objekt umgewandelt.

Jetzt kann ich geschachtelte Werte in einer Codezeile abrufen, indem ich die Methode von PHP 5.3 für die Verkettung von Objekten verwende.

$active = $this->input->post_obj('user')->active; 
1

HTML-Code:

<input type="text" value="" name="myPostArrayName[]"> 
<input type="text" value="" name="myPostArrayName[]"> 

Handhabung Form mit codeigniter:

$data = $this->input->post('myPostArrayName', TRUE); 

Sie können auf Daten zugreifen, um ähnliche

echo 'Value of the first element in the form array is '.$data[0]; 
echo 'Value of the second element in the form array is '.$data[1]; 

ich jemanden denken, der Zugriff auf codeigniter Dokumentation hat , sollte besser ein einfaches HTML-Post-Array-Handling-Beispiel hinzufügen.

Verwandte Themen