Лучше на мой взгляд определить для динамических полей аттрибуты:
* type (string, int, datetime),
* required (обязательное ли поле),
* multiple/single (возможно ли вводить несколько значений)
* и т.п. в зависимости от задач
Ну а потом написать валидаторы в зависимости от type/required/multiple. Динамические поля и их аттрибуты хранить в БД.