2011-11-21 59 views
0

我想在表單中合併兩個值到Kohana中使用過濾器的組合字符串中,但是我無法解決如何做到這一點/如果它甚至是最好的方法來做到這一點。Kohana ORM過濾器

我有兩個值,一個表格中的日期和時間,我想在模型中將其轉換爲紀元時間字符串,並將該值保存到數據庫的日期時間字符串中 - 實現此目的的最佳方法是什麼?

回答

1

在這種情況下,過濾器是你最好的朋友。下面你可以找到例子,如何使用它們:

public function filters() 
{ 
    return array(
     // Trim all fields 
     TRUE => array(
      array('trim'), 
     ), 
     // Your callback function 
     'your_column' => array(
      array(array($this, 'your_callback')) 
     ), 
    ); 
} 

public function your_callback($value) 
{ 
    return strtotime($this->date . ' ' . $this->time); 
} 

這個過濾器將設置your_columnstrtotime($this->date . ' ' . $this->time) - 當然這只是一個例子。請記住,在驗證之前調用過濾器。

編輯:
想通過我創建創建專用方法後:

public function create_($values, $expected) 
{ 
    $values['your_column'] = $values['date'] . ' ' . $values['time']; 

    values($values, $expected); 

    // Create the object 
    return $this->create(); 
} 

當然,當你調用這個方法,不要在$expected數組,但your_column通過datetime

ORM::factory('event')->create_($_POST, array('title','venue','your_column', 'guest_count', 'contact_name', 'contact_number','bartab','dj')); 
+0

好吧,這是有道理的,但我不能解決它的控制器端 - 我這樣做: '$ member = ORM :: factory('event') - > values($ _ POST,array('title','venue','date','time','guest_count','contact_name','contact_number ','bartab','dj'));'我得到一個錯誤。我會認爲它會傳遞來自POST的值,但忽略未在模型中定義的列 - 但它出錯了。很明顯,我做錯了,但無法解決如何做到最好。 –

+0

看我的編輯:) – matino

+0

非常感謝你! –