Laravel.Fenom
, (*1)
Fenom Template Engine for Laravel 5, (*2)
Bringing Fenom to Laravel 5 using the new Contracts Package., (*3)
Installation
In the require key of composer.json file add the following, (*4)
"pafnuty/laravel-fenom": "1.*"
Run the Composer update command, (*5)
$ composer update
Run command, (*6)
$ php artisan clear-compiled
In your config/app.php add 'Pafnuty\Fenom\FenomViewServiceProvider', to the end of the providers array and comment the 'Illuminate\View\ViewServiceProvider' provider.
Like this:, (*7)
'providers' => [
...
'Illuminate\Validation\ValidationServiceProvider',
//'Illuminate\View\ViewServiceProvider',
...
'Pafnuty\Fenom\FenomViewServiceProvider',
]
Run the artisan vendor:publish command, (*8)
$ php artisan vendor:publish --provider="Pafnuty\Fenom\FenomViewServiceProvider"
Will be published with the default views and the configuration file., (*9)
Configuration
Config file available in the folder config/view-fenom.php.
Views by default have a structure similar to the structure of the blade for easier transition to new template engine in a new project., (*10)
Use
If you use the setting 'controller_syntax' => 'blade', changes to the controllers do not need to make., (*11)
If setting 'controller_syntax' => 'fenom' calling view in controller will be like this:, (*12)
public function index() {
return view('myfolder/welcome.tpl');
}
Syntax
Fenom — this is a very quick and easy template engine! With easy syntax, similar to Smarty Template Engine., (*13)
Control Structures
If Statements
{if $records|length === 1)
I have one record!
{elseif $records| length > 1}
I have multiple records!
{else}
I don't have any records!
{/if}
Loops
{for ($i = 0 to = 10)
The current value is {$i}
{forelse}
No values
{/for}
{foreach $list as $key => $value}
{$key}: {$value}
{foreachelse}
Empty
{/foreach}
Including Sub-Views
{include 'auth/errors.tpl' foo='bar'}
or
{insert 'auth/errors.tpl'}
Overwriting Sections
{* in app.tpl: *}
{block 'content'} text {/block}
{* in home.tpl: *}
{extends 'app.tpl'}
{block 'content'} home-text {/block}
{* in browser: *}
home-text
{* This comment will not be in the rendered HTML *}
Errors
{set $errors = $.errors}
{if $errors->any()}
{foreach $errors->all() as $error}
{$error}
{/foreach}
{/if}
App
{set $App = $.app}
{$App::someMethodName()}
More usage examples can be found on the Fenom documentation pages
- English docs
- Russian docs, (*14)