matteohertel / mh-widget
Flexible widget system with built in parser
Installs: 165
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 0
Open Issues: 0
Type:libray
pkg:composer/matteohertel/mh-widget
This package is not auto-updated.
Last update: 2026-01-03 22:32:48 UTC
README
Demo: http://test.matteohertel.uk/mh_widget/
Flexible, highly configurable widget system replace an HTML place holder with any content.
The main purpose for this package was to be used alongside a text editor like CKEditor to implement a flexible widget system for the end user(http://docs.ckeditor.com/#!/guide/widget_sdk_tutorial_1)
This package will provide a nice and neat interface to create widgets ready to use in any project, there are a lots of feature straight out of the box, but with its flexible nature can fit any need.
There are two main ways to use this package:
- Use the widget system standalone as easy way to render HTML
- Use the widget system with the integrated parser
To use the widget standalone:
- Create an instance of \MHDev\WidgetCore\MH_Widget
- Call the instance as a function (to trigger the magic
__invkoke) passing two arguments (one optional): namespace, config array - under the hood the class will:
- create a new instance of the requested widget in the given namespace(or use the default one \MHDev\Widgets\ and pass the config object
- call the instance as function (to trigger the magic
__invkoke) and return the result
The single widget workflow is:
- from the magic invoke the the
controllermethod is called - the
controllermethod call themodelmethod to get data - the
controller will call and return the view method passing the data from the model- if the
prevent_viewkay is found in the config array the controller will return the data from the model without call the view
- if the
###Using the parser With the integrated parser you can use a custom non-standard html tag mhwidget with attributes to render content from the widget, and example of a working tag:
<mhwidget size="128" email="youremail@gravatr.com">Gravatar</mhwidget>
##Under the hood
To be a proper widget the class must extend the WidgetAbstract class and override the __invoke, controller, model and view methods,
##Usage
Simple hello world
$widget = new \MHDev\WidgetCore\MH_Widget("\MHDev\Widgets\\");
echo $widget("Example\HelloWorld");
Gravatar
$widget = new \MHDev\WidgetCore\MH_Widget("\MHDev\Widgets\\");
echo $widget("Gravatar", ["email" => "info@matteohertel.com", "size" => 80]);
##Example To see the package in action run the following(php must be available in the console):
git clone https://github.com/matteo-hertel/MH_Widget.git
cd MH_Widget
php -S localhost:8080 -t ./Example
the open your browser to http://localhost:8080
Version
0.2
Feedback
Please, send me your feedback, using the issue tracker on github or via email to info[at]matteohertel.com
Dependencies
There are no external dependencies but the Parser require the native DOMDocument class and a the widget tag syntax must be right to work properly
License
MIT