WidgetRendererDecorator::renderSettings PHP Method

renderSettings() public method

Render widget settings form
public renderSettings ( ) : void
return void
    public function renderSettings()
    {
        ob_start();
        $translator = \Zend_Registry::get('container')->getService('translator');
        $reflection = new ReflectionObject($this->widget);
        $filter = ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED;
        foreach ($reflection->getProperties($filter) as $property) {
            $doc = $property->getDocComment();
            if (strpos($doc, '@setting') === FALSE) {
                continue;
            }
            // get label
            $matches = array();
            if (preg_match('/@label ([^*]+)/', $doc, $matches)) {
                $label = trim($matches[1]);
            } else {
                $label = $property->getName();
            }
            // generate id
            $id = $reflection->getName() . '-' . $property->getName();
            $id = strtolower($id);
            // value getter
            $method = 'get' . ucfirst($property->getName());
            echo '<dl><dt>';
            echo '<label for="', $id, '">', rtrim($translator->trans($label, array(), 'extensions'), ' (*)'), '</label>';
            echo '</dt><dd>';
            printf('<input id="%s" type="text" name="%s" value="%s" maxlength="255" />', $id, $property->getName(), $this->widget->{$method}());
            echo '</dd></dl>', "\n";
        }
        $settings = ob_get_clean();
        if (empty($settings)) {
            return;
        }
        echo '<form class="settings" action="" method="">';
        echo '<fieldset>', $settings;
        echo '<input type="submit" value="', $translator->trans('Save'), '" />';
        echo '</fieldset>';
        echo '</form>';
    }