我有一個非常奇怪的問題,我似乎無法弄清楚或理解。所以基本上我有一個抓取通過Codeigniter URI傳遞的ID,讓它填充一個隱藏的表單,然後提交。但是,當我提交表單隱藏時,它回來說數據是NULL。我已經嘗試並將其更改爲form_input,它工作正常。任何人都可以幫助我或向我解釋爲什麼會出現這種情況?Codeigniter隱藏表單變爲NULL
我試過以下解決方案。
URL
http://localhost/list/players/add/1/
在我想要URI 3( '1')以在傳遞給形式和提交。
解決方案1 - 具有URI直傳遞到數據陣列
控制器
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/');
}
}
解決方案2 - 抓住URI和填充隱藏表單
控制器
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/');
}
}
查看
<?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();
?>
在這兩種情況下,對提交回來了一個錯誤,說leagues_id爲NULL。現在我已經嘗試在解決方案2中從「form_hidden」更改爲「form_input」,並立即單擊提交併且工作正常。
任何人都可以幫助我或建議爲什麼這是這種情況?
非常感謝。
謝謝skyyler。我已經嘗試了您的解決方案,但是現在當我提交時(甚至是空白頁面),它甚至不會加載下一頁。我已經嘗試了這兩個form_hidden和form_input。注意在form_input中,表單確實填充了正確的ID,但現在它甚至不會提交到數據庫,而之前它已經做到了。 –
對不起,忘了注意'url'助手已經自動加載了,我不明白你的意思是「你的form_hidden聲明太糟糕了。」?我的語法和提供的例子完全一樣,唯一不同的是它在一個foreach函數中,所以我可以加載變量。乾杯。 –
我想你的'$ league_id'在這種情況下沒有任何價值(這就是爲什麼你在發佈後沒有看到任何東西)。我不想在你的代碼中改變所有的東西,所以請使用你的解決方案,但試試'form_hidden('leagues_id',$ league_id);'而不是'form_hidden($ data)'。 – skyyler