Kohana ORM Filters - PullRequest
       7

Kohana ORM Filters

0 голосов
/ 21 ноября 2011

Я пытаюсь объединить два значения из формы в комбинированную строку, используя фильтры в Kohana, однако я не могу понять, как это сделать / если это даже лучший способ сделать это или нет.

У меня есть два значения, даты и времени в форме, которые я хочу преобразовать в строку времени эпохи в модели и сохранить это значение в строке даты и времени в базе данных - что было бы лучшим способом достижения этого

1 Ответ

1 голос
/ 21 ноября 2011

Фильтры - ваш лучший друг в этом случае. Ниже вы можете найти пример, как их использовать:

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_column в strtotime($this->date . ' ' . $this->time) - конечно, это только пример. Помните, что фильтры вызываются до проверки.

EDIT:
После обдумывания я бы создал специальный метод для создания:

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

   values($values, $expected);

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

Конечно, когда вы вызываете этот метод, не передавайте date и time в массиве $expected, но your_column:

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