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>';
}