2014-05-15 94 views
1

在我的插件選項頁面中,我使用了一個選項複選框。當它檢查時,這是可以的。但是當我未選中它,也出現了錯誤,這一點:未定義索引錯誤4

Undefined index: enable in C:\xampp\htdocs\horror\wp-content\plugins\self-photo-gallery\photo-gallery.php on line 173 
/> 

行173:

<input id="spg_settings[enable]" name="spg_settings[enable]" type="checkbox" value="1" <?php checked(1, $spg_options['enable']); ?> /> 

但還有另外一個領域

<input type="text" id="spg_settings[twitter_url]" name="spg_settings[twitter_url]" value="<?php echo $spg_options['twitter_url']; ?>"/> 

它工作正常,沒」顯示任何這樣的錯誤。

+0

查看我的更新回答 –

+0

再次檢查,是代碼中的錯誤 –

+0

我想我不能讓你理解。這在你現在已經回答之前已經有效了。但是現在我使用了你的代碼,但是它沒有保存任何東西。我以前的工作很好。 我的問題是在這裏, /> 對不起,請勿將代碼置於正確的方式 – aarif

回答

2

添加單引號。

使用spg_settings['enable']代替

始終使用引號字符串常量數組索引。例如,$ foo ['bar']是正確的,而$ foo [bar]不是。但爲什麼?在舊腳本中遇到這種語法是很常見的:

<?php 
$foo[bar] = 'enemy'; 
echo $foo[bar]; 
// etc 
?> 

這是錯誤的,但它有效。原因是這段代碼有一個未定義的常量(bar)而不是一個字符串('bar' - 注意引號)。 PHP可能在將來定義常數,不幸的是,這些代碼具有相同的名稱。它的工作原理是PHP自動將一個裸露的字符串(不與任何已知符號對應的未加引號的字符串)轉換爲包含裸露字符串的字符串。例如,如果沒有定義的常量bar,那麼PHP將替換字符串'bar'並使用它。

UPDATE1:

更換

<input type="text" id="spg_settings['twitter_url']" name="spg_settings['twitter_url']" value="<?php echo $spg_options['twitter_url']; ?>"/> 

用的代碼如下行

<input type="text" id="spg_settings['twitter_url']" name="spg_settings['twitter_url']" value="<?php echo (isset($spg_options['twitter_url'])) ? $spg_options['twitter_url'] : ''; ?>"/> 

UPDATE2:

而更換

<input id="spg_settings['enable']" name="spg_settings['enable']" type="checkbox" value="1" <?php checked(1, $spg_options['enable']); ?> /> 

<input id="spg_settings['enable']" name="spg_settings['enable']" type="checkbox" value="1" <?php checked(1, (isset($spg_options['enable'])) ? $spg_options['enable'] : 0); ?> /> 

欲瞭解更多信息,請查看here

+0

如果我使用單引號如 id =「spg_settings ['enable']」name =「spg_settings [enable]」,則發佈更新後的錯誤代碼爲 –

+0

,結果與以前相同。 但我把另一個字段的文本類型: 「/> 但這工作正常。我不明白什麼是anoter字段 – aarif

+0

@aarif問題,把問題作爲一個更新,這將更具可讀性。哪些工作不起作用 –

2

試試這個

<input id="<?php echo $spg_settings['enable'];?>" name="<?php echo $spg_settings['enable'];?>" type="checkbox" value="1" <?php checked(1, $spg_options['enable']); ?> /> 
+0

如果我使用這個,另一個錯誤與前一個顯示,也就是說,該選項現在不保存 – aarif

+0

這意味着你的'$ spg_settings ['enable']'或$ spg_options [ 'enable']'沒有設置 –

0

儘量把報價和執行print使用數組索引值時:

<input id="<?php print $spg_settings['enable'];?>" name="<?php print $spg_settings['enable'];?>" type="checkbox" value="1" <?php checked(1, $spg_options['enable']); ?> /> 
+0

它不能正常工作。結果與以前相同。我把另一個字段的文本類型: 「/>但這工作正常。 – aarif