2012-08-05 36 views
1

我在Codeigniter v2.1.2中使用Datamapper v1.8.2,並且"get" rule似乎無法在值爲NULL的字段上運行。這裏的模型:Codeigniter Datamapper未運行獲取NULL值字段上的規則

class Page extends Datamapper { 

    public $validation = array(
     'name' => array(
      'rules' => array('required'), 
      'get_rules' => array('get_page_name') 
     ) 
    ); 

    function _get_page_name($field) 
    { 
     $this->$field = 'TESTING '.$this->id; 
    } 

} 

示例代碼:

$page = new Page(); 
foreach ($page->get() as $p) echo $p->name; 

當表中的字段name具有任何非空值,包括空字符串,它工作正常輸出類似TESTING 358,但是當值NULL (這是該字段的默認值),它不輸出任何內容。使用get_iterated()沒有區別。

我想我可以通過更改默認值解決此問題,但我想知道如果我做錯了什麼或錯過了文檔中的某些東西,或者它可能是一個錯誤?有誰知道這個問題是什麼?另外,如果有人可以指向我在Datamapper 1.8.2支持的CI論壇中的正確主題,那麼我會試圖找到它並迷失在老版本的線程鏈接迷宮中的DM。

回答

2

您需要將allow_null添加到get_rules陣列才能完成此項工作。我不確定創作者的意圖,但這是how get_rules are implemented(但我沒有看到它在文檔中提到)。

+0

就是這樣,謝謝!在Google搜索「codeigniter datamapper allow_null」只返回了DM源代碼的結果,所以我猜這裏沒有任何文檔?即使這個頁面沒有出現,通常SO帖子在結果的頂部。不是說我會事先知道搜索「allow_null」,只是檢查它是否被記錄。 – 2012-08-06 11:49:37

+0

我從來沒有見過關於這方面的文檔,只是在調試過程中偶然發現了它。我想這不是兩條評論。 – complex857 2012-08-06 11:59:21

+0

下次你遇到這樣的事情時,請儘量在bitbucket上爲此創建一個問題,以便它可以修復。 – WanWizard 2012-08-13 16:05:07