evgeniy-it / widget-bundle
WidgetBundle is something similar to modx snippets, makes your content managment system powerful.
Installs: 2 087
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=5.4
- symfony/symfony: >=2.7
Requires (Dev)
- symfony/phpunit-bridge: ~2.7
This package is not auto-updated.
Last update: 2025-05-11 00:00:36 UTC
README
Widget bundle is something similar to modx snippets, makes your content managment system powerful.
Installation
With composer:
composer require evgeniy-it/widget-bundle
Widget will be ready to work
Getting started
Render widget via such a shortcode:
[[widget_name? &setting=`1` &settingArray=`[1,2,3]` &settingAssocArray=`{'item1':'value1','item2':'value2'}`]]
Widget also can be nested multiple times:
[[widget_name? &nestedSetting=`[[widget_name2? &setting1=`value1` &setting2=`[[widget3]]`]]`]]
For parsing and rendering use twig widget filter, it will find all widgets, parse and process them:
{{ some_string_var|widget}}
Be sure about widget syntax:
- widget name must be ended with ?
- any option must start with &
- any option value must be wrapped in `
- a widget must be started with [[ and ends with ]]
#Using:
##Default widgets:
Simple widget
This widget just renders setting variables into specified template. If template is not specified it will render only option &content
.
You can specify template as well. Specify template whether as a link or as a string..
#####Example:
Using default template:
{{ '[[simple? &content=`Hello world`]]'|widget }}
or nested
{{ '[[simple? &content=`[[simple? &content=`Hello world`]]`]]'|widget }}
Will output:
Hello world
Using custom template:
{{ '[[simple? &setting1=`value1` &setting2=`value2` &setting3=`value3` &template=`{{setting1}} - {{setting2}} - {{setting3}}`]]'|widget }}
or
{{ '[[simple? &setting1=`value1` &setting2=`value2` &setting3=`value3` &template=`AppBundle:Widget:simple.html.twig`]]'|widget }}
{# AppBundle:Widget:simple.html.twig#} {{setting1}} - {{setting2}} - {{setting3}}
Will output:
value1 - value2 - value3
Repository widget
Renders collection of doctrine models
Params:
- tpl - one item element template
- model - entity model class
- function - function that will be called
- args - function args. json format
other params:
- beforeTpl - contents piece of code that is being shown before item code structure
- afterTpl - contents piece of code that is being shown after item code structure
in the specified template will be available those vars:
- item - fetched entity model
- idx (int) - ordinal Number
- isFirst (bool) - if the element is the first
- isLast (bool) - if it's the last element
Example:
<?php namespace App\Bundle\ProductBundle\Entity; class Product { /** * @var string * * @ORM\Column(type="string", nullable=true) */ private $name; /** * @var string * * @ORM\Column(type="string", nullable=true) */ private $slug; /** * @var bool * * @ORM\Column(type="boolean") */ private $active = false; /** * @var ArrayCollection * * @ORM\OneToMany(targetEntity="App\Bundle\ShopBundle\Entity\ProductCategory", mappedBy="product", cascade={"persist"}) */ private $categories; //...
{{ '[[repository? &model=`AppProductBundle:Product` &function=`findBySlug` &args=`["testslug"]` &tpl=`{{item.name}}` &tpl=`{{idx+1}}. {{item.name}}<br/>`]]'|widget }}
will output:
1. product 1
2. product 3
3. product 3
...
n. product n