Home Documentation GitHub Support

Skeltch

Introduction

Skeltch is a templating engine for Glowie views. When working with Skeltch you can simplify the amount of PHP code in your views and make them a lot prettier and easier to understand.

Processing views with Skeltch

In order to use Skeltch, in your App configuration for the current environment, set the skeltch setting to true. This will enable Skeltch compiling for all your application views.

Example Config.php

'skeltch' => true,

Caching and performance

If the cache option is enabled in your App configuration, Skeltch will only compile a view if it hasn't been compiled yet or if there are any modifications to the view file. This cached view will be stored at app/storage/cache. We highly recommend leaving caching on in a production environment, since it will boost your application performance significantly.

Variables

In order to display PHP variables in the view using Skeltch, put the variable between two pairs of curly braces.

Example controller

$this->renderView('index', ['name' => 'Glowie']);

index view

<h2>Hello, {{$this->name}}</h2>
<!-- This will print "Hello, Glowie" -->

This snippet is a shortcut to PHP echo() function. This means you can use here any function that returns a printable string.

All content passed within this shortcut will be treated inside htmlspecialchars() function to prevent XSS attacks. If for some reason you want to bypass this treatment, use two exclamation marks right after and before the braces.

Example

<h2>Hello, {{!! $this->name !!}}</h2>

Bypassing Skeltch compiling

While working with some frontend frameworks that also uses the curly braces syntax you may run into conflicts with Skeltch compiler. For dealing with this kind of conflict, simply put an @ before the expression and it will be ignored by Skeltch.

Example

Hello, @{{$var}}

In this case, Skeltch will remove the @ symbol, but the rest of the expression will remain untouched for your frontend framework parser.

Conditionals

Conditionals in Skeltch views are written in the following way:

{if($condition)}
    <!-- Your code here -->
{elseif($condition)}
    <!-- Your code here -->
{else}
    <!-- Your code here -->
{/if}

You can use any valid PHP logic between the parentheses.

Checkers

You can check for variables using the shortcuts for the functions empty() and isset():

{empty($variable)}
    <!-- Your code here -->
{/empty}
{notempty($variable)}
    <!-- Your code here -->
{/notempty}
{isset($variable)}
    <!-- Your code here -->
{/isset}
{notset($variable)}
    <!-- Your code here -->
{/notset}

You can also combine checkers with conditionals.

Example

{empty($name)}
    <b>Your name is empty!</b>
    {elseif($name == 'Gabriel')}
        <b>You have a beautiful name, huh?</b>
    {else}
        <b>Hello, {{$name}}</b>
{/empty}

Loops

In order to work with loops in the view using Skeltch, use any of the following snippets:

{for($i=0; $i < $count; $i++)}
    <!-- Your code here -->
{/for}
{foreach($variable as $key => $value)}
    <!-- Your code here -->
{/foreach}
{while($variable)}
    <!-- Your code here -->
{/while}
{switch($variable)}
    {case('value')}
    <!-- Your code here -->

    {default}
    <!-- Your code here -->
{/switch}

You can use any valid PHP iteration logic between the parentheses.

You can also use break and continue statements as:

{continue}
{break}

Glowie shortcuts

Skeltch also provides shortcuts to common Glowie functions used in views:

$this->renderView() (see Views)

{@view('index', ['name' => 'Glowie'])}

$this->renderLayout() (see Layouts)

{@layout('default', 'index', ['name' => 'Glowie'])}

echo $this->getContent() (see Layouts)

{@content}

echo Babel:get() (see Internationalization)

{@babel('message', 'en')}

echo Util::baseUrl() (see Util)

{@url('/')}

echo Util::route() (see Util)

{@route('products', ['id' => 1])}

echo Util::asset() (see Util)

{@asset('style.css')}

echo Util::csrfToken() (see CSRF Protection)

{@csrf}

Comments

You can create comments by adding text between one pair of curly braces, starting and ending with a hashtag. These comments will not be rendered into HTML.

Example

{# Your comment goes here #}

Raw PHP code

If you want to write raw PHP code in your Skeltch view, put your code between one pair of curly braces, starting and ending with a percent sign.

Example

{% $variable = 'test' %}