2012-12-06 38 views
2

如何更改下面的php,以便檢查初始視圖,但如果用戶取消選中並提交表單,則每次訪問表單時都會保持未選中狀態(直到他們選擇再次檢查該值)?複選框默認爲選中狀態,除非用戶未選中

class My_Recent_Posts_Widget extends WP_Widget { 

function form($instance) { 

    /* form code here...*/ 

    <input 
    type="checkbox" 
    class="checkbox" 
    id="<?php echo $this->get_field_id("excerpt"); ?>" 
    name="<?php echo $this->get_field_name("excerpt"); ?>"<?php checked((bool) $instance["excerpt"], true); ?> 
    /> 

    /* form code here...*/ 

    } 
} 

UPDATE:將檢查=「選中」輸入框裏面是不是我要找的。原因是每次用戶點擊取消選中,提交後它總是回來檢查。一旦用戶取消選中該選項,在隨後訪問該表單時應該保持未選中狀態。但是,使用checked = checked可確保總是檢查默認狀態,而不管用戶是否先前未選中此特定項目。

我只需要檢查的默認價值,但如果用戶未選中它甚至有一次,我需要堅持,這樣在每次打開的形式,直到他們選擇檢查一下自己的時間其選中。我相信答案在於數據庫中$ instance [「摘錄」]項的狀態。

+0

你必須保持上獨立列表,它的箱子需要進行檢查,然後重新應用每次列出? –

+0

沒有足夠的代碼來回答。你的代碼在什麼情況下發生? – brasofilo

+0

@brasofilo - 上下文位於WordPress中的窗體控件中。我已經使用包裝函數更新了帖子... – RegEdit

回答

0

查看Justin Tadlock的這篇文章:The complete guide to creating widgets in WordPress 2.8

在那裏,你會看到解析形式的參數時,你可以有$defaults

function form($instance) { 

    /* Set up some default widget settings. */ 
    $defaults = array( 
      'title' => 'Example' 
     , 'name'  => 'John Doe' 
     , 'sex'  => 'male' 
     , 'show_sex' => true 
    ); 
    $instance = wp_parse_args((array) $instance, $defaults); 
0

只需將選中屬性

<input 
    type="checkbox" 
    class="checkbox" 
    checked="checked" 
    id="<?php echo $this->get_field_id("excerpt"); ?>" 
    name="<?php echo $this->get_field_name("excerpt"); ?>"<?php checked((bool) $instance["excerpt"], true); ?> 
/> 
1

只要把:checked="checked"

您輸入標籤中。

1

假設我們正在談論WordPress在這裏,您使用的是:

<?php checked((bool) $instance["excerpt"], true); ?> 

所以複選框將取決於$instance["excerpt"]值進行檢查。

您應該根據需要修改條件,但如果沒有看到更多詳細信息,很難做到這一點。

編輯:如果該值存儲在$instance["excerpt"]你應該確保新用戶在數據庫中的默認值是檢驗值(1爲例)。這樣,只要用戶不改變它,它仍然會被檢查。

+0

是的,WordPress。那麼有沒有辦法做到這一點?我想默認值來檢查。但是,一旦用戶取消選中它,我想以某種方式將數據庫中的值更改爲取消選中,以便每次用戶再次加載小部件時,他們不必一直點擊取消選中該選項。 PS:這是一個小部件控制面板。 – RegEdit

+0

@RegEdit存儲在/存儲在數據庫中的小部件複選框是什麼變量/變量的可能值是什麼? – jeroen

+0

@RegEdit查看我的編輯。 – jeroen