Я постараюсь быть максимально понятным.
Я работаю над проверкой формы, используя замечательный фреймворк кохана.Однако я попал на перепутье и не уверен, является ли мой выбор мудрым выбором.
По сути, у меня есть селектор даты, использующий несколько полей выбора (я играл с идеей использования средств выбора даты в JavaScript, нополя выбора оказались более подходящими для моей цели) и поле даты в базе данных.Я хотел объединить эти поля выбора в поле даты, чтобы его можно было проверить, чтобы убедиться, что он действителен.
protected $_rules = array(
'mydate' => array(
'not_empty' => NULL,
'date' => NULL,
),
);
Теперь для меня наиболее разумно включить проверку в модель, поскольку именно здесь слой данных находится в шаблоне MVC, поэтому я решил создать некоторые атрибуты класса с именем $ _rules, $_filters и $ _callbacks, каждый из которых установлен как защищенный и с применением моих основных правил.И затем функция в модели, которая устанавливает объект проверки с использованием этих атрибутов и возвращает его любому вызывающему контроллеру, затем контроллер может просто выполнить проверку и задание выполнено.
Моя проблема возникает, когда я хочу объединить эти блоки выбора, для меня наиболее целесообразно создать собственный фильтр и передать данные поста, но с правилами фильтров и обратными вызовами, являющимися атрибутами, я не могудобавить любые переменные к ним.Мое текущее решение состоит в том, чтобы вручную добавить дополнительный фильтр, когда функция настройки проверки запускается примерно так:
public function setupValid($post) {
$this->_filters['mydatefield'] = array(
'MyClass::MyConcat' => array($post);
);
//creates a validation object and adds all the filters rules and callbacks
}
Но я не думаю, что это самое чистое решение, я, наверное, невыбирая как решение работает так, как мне нужно.Однако я не уверен, был ли фильтр когда-либо предназначен для такой вещи, или это должен быть обратный вызов, так как обратный вызов имеет доступ к массиву по умолчанию, но опять же обратные вызовы вызываются последними, что будет означать, что яне может применять какие-либо правила, например, not_empty (в данном случае это не важно, поскольку они предварительно заполнены полями выбора, но могут быть и в другом случае)
Так что я думаю, что мой вопрос: использую ли я фильтрыони были предназначены для использования?
Надеюсь, мне удалось объяснить это ясно.
Спасибо