jamessampford / Smarty-Plugins

A collection of smarty plugins.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Smarty Plugins

This is a repo of various smarty plugins. Hopefully someone else finds them useful.

attr

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"

Options

There are a few options you can pass in to customize the output of the generated attributes string.

enclose

default: "

{attr target=$obj class="active" enclose="'"}
> class='is-active'

delimiter

default: " " (single space)

{attr target=$obj class="active" href="public_url" delimiter="\n"}
> class="is-active"\nhref="http://example.com"

sort

default: false

{attr target=$obj href="public_url" class="active" sort=true}
> class="is-active" href="http://example.com"

About

A collection of smarty plugins.