<?php
 
/**
 
 * User: delboy1978uk
 
 * Date: 04/12/2016
 
 * Time: 22:33
 
 */
 
 
namespace Del\Form\Renderer\Field;
 
 
use Del\Form\Field\FieldInterface;
 
use Del\Form\Field\Select;
 
use DOMElement;
 
use DOMText;
 
use InvalidArgumentException;
 
 
class SelectRender extends AbstractFieldRender implements FieldRendererInterface
 
{
 
    /**
 
     * @param FieldInterface $field
 
     * @param DOMElement $element
 
     * @return DOMElement
 
     */
 
    public function renderBlock(FieldInterface $field, DOMElement $element)
 
    {
 
        if (!$field instanceof Select) {
 
            throw new InvalidArgumentException('Must be a Del\Form\Field\Select');
 
        }
 
        foreach ($field->getOptions() as $value => $label) {
 
            $option = $this->processOption($field, $value, $label);
 
            $element->appendChild($option);
 
        }
 
        return $element;
 
    }
 
 
    /**
 
     * @param FieldInterface $field
 
     * @param string $value
 
     * @param string $label
 
     * @return DOMElement
 
     */
 
    private function processOption(FieldInterface $field, $value, $label)
 
    {
 
        $option = $this->createElement('option');
 
        $option->setAttribute('value', $value);
 
        $label = $this->createText($label);
 
        $option->appendChild($label);
 
        if ($field->getValue() == $option->getAttribute('value')) {
 
            $option->setAttribute('selected', 'selected');
 
        }
 
        return $option;
 
    }
 
}
 
 |