2013-01-06 56 views
1

我有一個使用數組作爲輸入名稱的CI驗證表單。視圖最初具有這樣的代碼:Codeigniter:set_value無法正確重新填充數組表單字段

<input type="text" name="feed_urls[]" 
    value="<?php echo set_value('feed_urls[]', ''); ?>" > 

,當加載到瀏覽器正確地轉換到這樣的:

<input type="text" name="feed_urls[]" value=""> 

然後通過Jquery的用戶可對DOM提交前添加更多相同<input>的,所以最終POST的內容可能是例如

<input type="text" name="feed_urls[]" value=""> 
<input type="text" name="feed_urls[]" value=""> 
<input type="text" name="feed_urls[]" value=""> 

現在,如果提交的數據通過驗證,一切都很好,並存儲在數據庫中。但是,如果驗證失敗,控制器將發送回視圖,但我看不到POST的表單的N <input>。我只看到一個,它是空的,這是可以理解的,因爲我沒有爲set_values()提供第二個參數,但是再次預期會看到輸入通過$ this-> input-> post被重新填充(feed_urls)數組與無效的POST數據。

我在控制器驗證$ this-> input-> post('feed_urls')是否有POST內容(無效或無效)就好了。

我讀過關於使用上有什麼正確的使用SET_VALUE的validation with arrays as field names

任何想法的CI用戶指南文檔()?正確的我的意思是,在驗證失敗時,我得到了已發佈的N個輸入,並逐個正確地重新填充。

回答

0

由於您僅提供一小部分代碼,因此我只能給您提示我認爲是您的主要問題。

輸入陣列的N元件可以通過使用jQuery如下進行填充:

$("[id^=feed_urls]").eq(0).val(someURL); 
$("[id^=feed_urls]").eq(1).val(someURL); 
$("[id^=feed_urls]").eq(2).val(someURL); 

等。

1

您可以使用:

<input type="text" name="feed_urls[]" value="<?php echo set_value('feed_urls[0]'); ?>"> 

我已經測試了CI 2.0,但它也應該工作在以前的版本。

乾杯!

+0

但是,如何知道應該輸出多少這樣的輸入?無論如何,至少獲得數組的大小? – jayarjo