This is a repo of various smarty plugins. Hopefully someone else finds them useful.
This attr
function is meant to shorten the syntax used to set various html attributes
more specifically the class
attribute. It was inspired by the bindAttr
helper in ember.js.
You provide a target
object and that is used to
grab properties from. If the value passed in for the attribute is a property on the target
the value of that property is returned. If it is not a valid property then the string literal will
be used instead.
When dealing with a class
attribute it acts a little differently. First of all you can pass in a
space delimited list of property names or values. If the property is a boolean it will dashize the
property name some_bool => is-some_bool
. If you don't want that you can pass in an alternate value
for when the bool is true some_bool:this-was-true => this-was-true
. If the bool is false the class
won't be added to the attribute.
# Sample object
$obj->active = true;
$obj->title = 'Whaddup';
$obj->status = 'pending';
$obj->public_url = 'http://example.com';
template file
{attr target=$obj class="active active:this-is-active status crap" href="public_url"}
> class="is-active this-is-active pending" href="http://example.com"
There are a few options you can pass in to customize the output of the generated attributes string.
default: "
{attr target=$obj class="active" enclose="'"}
> class='is-active'
default: " " (single space)
{attr target=$obj class="active" href="public_url" delimiter="\n"}
> class="is-active"\nhref="http://example.com"
default: false
{attr target=$obj href="public_url" class="active" sort=true}
> class="is-active" href="http://example.com"