2011-08-18 20 views
1

我正在開發一個使用Codeigniter的REST API。 我需要從表單驗證的陣列格式的所有錯誤消息,以便 我可以輕鬆地以JSON或XML響應。如何獲取數組中的驗證錯誤?

眼下笨與<p>傳遞錯誤信息作爲分隔符(見下文) 但不利於基於REST API。

<p>There was an error with this item</p> 

我怎樣才能在陣列中的錯誤?

感謝您的所有意見!在一個陣列

/** 
* @param $errors string 
* @return array 
*/ 
function transformErrorsToArray ($errors) { 
    $errors = explode('</p>', $errors); 
    foreach ($errors as $index => $error) { 
     $error = str_replace('<p>', '', $error); 
     $error = trim($error); 
     // ... more cleaning up if necessary 
     $errors[$index] = $error 
    } 
    return $errors; 
} 
+0

標籤。他們不打算拿冠軍。 – Bojangles

+0

可能Codeigniter表單模塊對於您的目的不夠靈活。用更靈活的實施方式替代它是您的一個選擇嗎? – hakre

+0

也許吧。你知道任何好的選擇嗎? –

回答

1

表單驗證庫存儲錯誤,並通過他們循環,以產生錯誤字符串:

+0

有趣!這樣的擴展將如何? –

+0

剛用一些代碼更新了我的答案。 –

+0

酷!我如何在我的控制器中使用它? –

1

您可以輕鬆地改變它。它們存儲在一個名爲$_error_array的私有變量中。您可以使用返回錯誤數組的簡單方法來擴展庫。

class MY_Form_validation extends CI_Form_validation 
{ 
    function get_error_array() 
    { 
     return $this->_error_array; 
    } 
} 

我假設你熟悉擴展核心CI庫,但這個擴展的表單驗證庫會給你返回的錯誤與爲關鍵和消息的名稱屬性的值陣列的方法價值。我在我的一個項目上測試了它,並且它工作正常。

+0

看起來不錯,但它在數組末尾添加了一個空的「插槽」。我怎樣才能離開呢?陣列 ( [0] =>是必需的號碼字段。 [1] => ) –

+0

我喜歡這個答案比接受的一個,因爲它不要求你改變的CodeIgniter核心代碼 – Jarrett