Maslosoft Framework Logo Maslosoft Framework Documentation
Flexible Application Foundation

Settings Tabs

This is a helper base class to create tabbed sub-settings. This will create tabs out of array of provided widgets. It is meant to be used with application settings infrastructure. This will add tab with @Label label.


First requirement is label. The @Label must be placed on class extending from SettingsTabs.

SettingsTabs require only one method getWidgets(), which should return array of widgets of type WidgetInterface. Each widget should implement ModelAwareInterface which should return working model.

Each of widget is responsible for assiging model to it's form.

Each of the widget must also have @Label annotation, which will be used as a tab title.


In this example, there is no live demo

 * @Label('Content')
class SettingsWidget extends SettingsTabs

	public function getWidgets()
		return [
			new ImageSettings,
			new BrandSettings,
			new ThemeSettings


Each of widget returned by getWidgets() is self-contained model editing entity.

Example sub-widget
 * @Label('Images')
class ImageSettings extends MsWidget implements AnnotatedInterface,

	use ModelAware;

	public function init()
		$this->setModel(new ImageSettingsModel());

	public function run()
		$model = $this->getModel();
		$html = [];
		$html[] = (string) $form = new ActiveForm([
			'model' => $model
		$html[] = $form->renderFields();
		$html[] = $form->close();
		return implode("\n", $html);


The Outcome of Implementation

Example image of result of implementing SettingsTabs like in example above: