簡體   English   中英

無法將CHECKBOX字段類型保存在數據庫中-Joomla 2.5

[英]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_numberplayer_dobplayer_position

我有工具欄,從中可以添加NEW記錄或EDIT現有記錄。

我可以成功ADD player_numberplayer_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM