/** * @param ElementInterface $element * @param ModelBuilder $mb */ public function buildFormElement(ElementInterface $element, ModelBuilder $mb) { // Only continue if the element has to be mapped to a model. if ($element instanceof MultipleChoice && !$element->isMapped()) { return; } $name = $element->getName(); switch ($element) { case $element instanceof Element\Text: $mb->column($name)->type('string'); break; case $element instanceof Element\Textarea: $mb->column($name)->type('text'); break; case $element->hasRule('integer'): $mb->column($name)->type('integer'); break; case $element instanceof Element\ModelElement && $element instanceof Type\Choice: $mb->column($name)->type('integer'); break; default: $mb->column($name)->type('string'); } if ($element->getRules()) { $mb->get($name)->validate($element->getRules()); } }