У меня есть проблема в Zend-Framework2, где мне нужно прочитать / записать значение другого поля в фильтре одного поля.
У меня есть форма, которая получает адресные данные от пользователя: улица, номер, номерДобавление, почтовый индекс, город.
Мне нужно расстаться число а также NumberAddition, потому что у меня есть некоторые строгие ограничения при дальнейшей обработке этих данных. Номер должен быть числовым (int) и NumberAddition может быть строкой.
Пример пользовательского ввода:
номер: 47а
NumberAddition: [пусто]
Должен быть отфильтрован до:
номер: 47
NumberAddition:
Я хотел бы реализовать это в качестве фильтра: если NumberAddition пусто и число не является int, то разделить число на число и NumberAddition.
Есть ли способ сделать это с помощью фильтров или есть лучший подход?
Это не правильное решение
В обоих FilterInterface
и ValidatorInterface
мы не можем видеть ни одного $context
передается переменная, поэтому приведенное ниже решение не гарантирует прямой совместимости (в основном кто-то может удалить $context
и ваш код больше не будет работать, не нужно ждать основной версии, чтобы сделать это, поскольку она уже не является частью интерфейсов).
В вашем коде вы все еще можете использовать $context
как теперь вы знаете, что делаете; p
Итак, в основном:
class MyFilter implements \Zend\Filter\FilterInterface
{
public function filter($value, array $context = null)
{
if ($array && isset($context['fieldName'])) {
// do whatever
}
return $valueFiltered;
}
}
Других решений пока нет …