Skip to content

jamessampford/Smarty-Plugins

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

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.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published