NexaDom menyediakan sistem filter yang powerful dengan sintaks {variable|filter:args} untuk memformat dan memanipulasi data secara otomatis di dalam template. Filter dapat digunakan secara standalone atau dirangkai (chaining) untuk transformasi data yang lebih kompleks.
{title|upper}
{username|lower}
{name|capitalize}
{sentence|ucfirst}
{content|trim}
{text|ltrim}
{text|rtrim}
{description|substr:0:100}
{text|truncate:50:'...'}
Price: {price|number_format:2}
Amount: {amount|currency:'USD'}
Discount: {price|multiply:0.8}
Total: {subtotal|add:tax}
{value|round}
{number|ceil}
{number|floor}
{created_at|date:'Y-m-d'}
{updated_at|datetime:'d M Y H:i'}
{post.created_at|timeago}
{event.start_date|relative_time}
{birthday|date_format:'full'}
{deadline|countdown}
{tags|join:', '}
{items|sort|reverse}
- {item}
{/items}
{users|filter:'active'|count}
{numbers|sum}
{list|unique|sort}
{content|escape}
{html|strip_tags}
Link
...
{title|lower|trim|capitalize}
{price|multiply:0.9|currency:'USD'}
{content|strip_tags|truncate:100:'...'|escape}
{date|date:'Y-m-d'|upper}
{users|filter:'active'|sort:'name'|map:'email'|join:', '}
{description|strip_tags|truncate:200:'...'|escape|nl2br}
{price|multiply:quantity|add:tax|currency:'USD'|upper}
// In your filter class
class CustomFilters {
public function phone($number) {
return preg_replace('/(\d{3})(\d{3})(\d{4})/', '($1) $2-$3', $number);
}
public function highlight($text, $search) {
return str_replace($search, ''.$search.'', $text);
}
}
// Register filters
$this->registerFilters(new CustomFilters());
Phone: {contact.phone|phone}
{content|highlight:search_term}
{text|replace:'old':'new'}
{number|format_bytes:'MB'}
{user.name|default:'Guest'}
{user.settings.theme|default:site.default_theme|default:'light'}
{price|when:is_sale:'multiply:0.8'|currency}
{text|unless:is_html:'escape'}
{product.name|escape}
{product.description|truncate:200}
{product.price|currency:'IDR'}