Ich habe ein wirklich seltsames Problem, das ich nicht herausfinden oder verstehen kann. Also im Wesentlichen habe ich eine ID, um den Codeigniter URI zu übergeben, habe ein verstecktes Formular ausgefüllt und dann abgeschickt. Wenn ich das Formular jedoch als verborgen übergebe, kommt es zurück und sagt, dass die Daten NULL sind. Ich habe versucht und änderte es zu form_input und es funktioniert gut. Kann mir jemand helfen oder mir erklären, warum das so ist?Codeigniter Verborgene Form wird NULL
Ich habe die folgenden Lösungen ausprobiert.
URL
http://localhost/list/players/add/1/
wo ich URI 3 ('1') wollen Form weitergeben und vorgelegt.
Lösung 1 - Mit der URI
-Controller direkt auf Datenfeld übergeben
function add() {
if($this->form_validation->run() == FALSE) {
$data['view_file'] = 'add';
$this->load->module('template');
$this->template->cmslayout($data);
} else {
$league_id = $this->uri->segment(3);
$data = array(
'leagues_id' => $league_id,
);
if($this->_insert($data)){
return $query;
}
redirect ('/players/');
}
}
Lösung 2 - eine versteckte Form
Controller den URI Grabbing und füllen
function add() {
$league_id = $this->uri->segment(3);
$this->load->module('leagues');
$data['leagues_list'] = $this->leagues->get_where($league_id);
if($this->form_validation->run() == FALSE) {
$data['view_file'] = 'add';
$this->load->module('template');
$this->template->cmslayout($data);
} else {
$data = array(
'leagues_id' => $this->input->post('leagues_id'),
);
if($this->_insert($data)){
return $query;
}
redirect ('/players/');
}
}
Ansicht
<?php
echo form_open('players/add/');
?>
<?php
echo "<br>";
echo "<br>";
echo "League Name";
echo "<br>";
foreach ($leagues_list->result() as $row) {
$league_id = $row->id;
$league_name = $row->league_name;
echo $league_name;
$data = array( 'name' => 'leagues_id',
'value' => $league_id,
);
echo form_hidden($data);
}
echo "<br>";
echo "<br>";
$data = array( 'value' => 'Set Player',
'name' => 'submit',
'class' => 'submit-btn',
);
echo form_submit($data);
echo form_close();
?>
In beiden Szenarien auf vorlegen kommt zurück mit einer Fehlermeldung, leagues_id NULL ist. Jetzt habe ich in Lösung 2 versucht, von 'form_hidden' zu 'form_input' zu wechseln und sofort auf submit zu klicken und es funktioniert gut.
Kann mir jemand helfen oder raten, warum das so ist?
Vielen Dank.
Danke skyyler. Ich habe deine Lösung ausprobiert aber jetzt wird es nicht mal die nächste Seite laden wenn ich absende (nur eine leere Seite). Ich habe das sowohl mit form_hidden als auch mit form_input versucht. Beachten Sie, dass in form_input das Formular mit der richtigen ID ausgefüllt wird, aber jetzt wird es nicht mehr an die Datenbank gesendet, während es zuvor getan hat. –
Tut mir leid, ich habe vergessen zu bemerken, dass der "URL" -Helfer bereits automatisch geladen ist, und ich verstehe nicht, was Sie meinen, "Ihre form_hidden-Deklaration war auch schlecht."? Meine Syntax ist genau die gleiche wie das Beispiel, nur der Unterschied ist, dass es in einer Foreach-Funktion ist, damit ich die Variablen laden kann. Prost. –
Ich nehme an, dass Ihre '$ league_id' in diesem Fall keinen Wert erhält (deshalb sehen Sie nach dem Post nichts). Ich möchte nicht alles in deinem Code ändern, also benutze bitte deine Lösung, aber probiere die 'form_hidden ('leagues_id', $ league_id);' anstatt deiner 'form_hidden ($ data)'. – skyyler