[英]Cannot save CHECKBOX field type in database - Joomla 2.5
我的.xml
文件在Joomla 2.5
中有多個checkboxes
字段
<field name="player_number"
type="text"
label="Player number"
description="Enter Player's number here"
class="inputbox"
size="30"
required="true"
/>
<field name="player_dob" type="calendar" default="" label="Select a date" description="" required="true" format="%Y-%m-%d" />
<field name="player_position" type="checkboxes">
<option value="Left">Left</option>
<option value="Right">Right</option>
<option value="Middle">Middle</option>
</field>
我在數據庫中有相關的數據列,例如player_number
, player_dob
和player_position
。
我有工具欄,從中可以添加NEW
記錄或EDIT
現有記錄。
我可以成功ADD
player_number
和player_dob
,並將退出值加載到EDIT
視圖中。
問題是CHECKBOX值未保存到數據庫中。
即使我從phpmyadmin
輸入player_position
的值,相關值也不會在EDIT視圖表單中顯示為CHECKED
令人討厭的是,此字段類型在文檔中指出“它將為您創建復選框,並以數組形式提交其值,但不會將其存儲在數據庫中。”
這意味着如果要保存JTable存儲功能,則必須重寫它。 http://docs.joomla.org/API16:JTable/store
以下代碼是我最后一次使用Joomla 3時使用的相關代碼(2.5應該相似)。 demofield
是我的復選框的名稱,並edit
該復選框出現的視圖的名稱。 此替代項保存在admin / tables / edit.php下:
class TableEdit extends JTable {
public function store($updateNulls = true)
{
JArrayHelper::toString($this->demofield);
$this->demofield= implode(',', $this->demofield);
return parent::store($updateNulls);
}
}
還值得一提的是,列表字段類型允許多選,並將保存在數據庫中。 這可能是一個更簡單的解決方案。 http://docs.joomla.org/List_form_field_type
可以使用以下單個語句在您的表單中生成復選框集:
<?php echo $this->form->getInput('player_position'); ?>
這將生成以下HTML,可以使用CSS設置其樣式:
<fieldset id="jform_player_position" class="checkboxes">
<ul>
<li><input type="checkbox" id="jform_player_position0"
name="jform[player_position][]" value="Left" /><label for="jform_player_position0">Left</label></li>
<li><input type="checkbox" id="jform_player_position1"
name="jform[player_position][]" value="Right" /><label for="jform_player_position1">Right</label></li>
<li><input type="checkbox" id="jform_player_position2"
name="jform[player_position][]" value="Middle" /><label for="jform_player_position2">Middle</label></li>
</ul>
如果用戶檢查了第一項和第三項並提交了表單,則Joomla服務器將提供以下結果:
print_r(JRequest::getVar('jform')['player_position']) =>
Array (
[0] => Left
[1] => Middle
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.