cryental / dinhquochan-laravel-twig
Twig Template for Laravel Framework
Requires
- php: ^7.3|^8.0
- illuminate/console: ^6|^7|^8
- illuminate/support: ^6|^7|^8
- illuminate/view: ^6|^7|^8
- twig/twig: ~3.0
Requires (Dev)
- laravel/framework: ^6|^7|^8
- mockery/mockery: ^1.3.1
- phpunit/phpunit: ^8.4|^9.0
README
Allows you to use Twig in Laravel.
Requirements
- PHP >= 7.3.0
- Laravel >= 6.x
Installation
You can install the package via composer:
composer require dinhquochan/laravel-twig
If you don't use auto-discovery, add the Service Provider to the providers array in config/app.php
\DinhQuocHan\Twig\TwigServiceProvider::class,
If you want to use the facade to extended twig extensions, add this to your facades in app.php:
'Twig' => \DinhQuocHan\Twig\Facades\Twig::class,
So, we will use Artisan to add the new twig config file:
php artisan vendor:publish --provider="DinhQuocHan\Twig\TwigServiceProvider"
Usage
You call the Twig template like you would any other view:
// Normal (template.html.twig or template.css.twig or template.twig) return view('template', ['some_variable' => 'some_values']); // With vender namespace return view('vendor_namespace::template', $data);
Read more in Twig for Template Designers or Laravel Views.
Extending Twig
Laravel Twig allows you to define your own custom filters, functions, globals, token parsers or extensions.
The following example creates a {{ product.price|money_format }}
filter which formats a given $product->price
:
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use DinhQuocHan\Twig\Facades\Twig; class AppServiceProvider extends ServiceProvider { /** * Register bindings in the container. * * @return void */ public function register() { // } /** * Bootstrap any application services. * * @return void */ public function boot() { Twig::addFilter(new TwigFilter('money_format', function ($price) { return sprintf('%d %s', number_format($price), 'US$'); })); } }
Available methods:
Twig::addGlobal(string $name, $value)
Creating a globalTwig::addFilter(\Twig\TwigFilter $filter)
Creating a filterTwig::addFunction(\Twig\TwigFunction $function)
Creating a functionTwig::addTest(\Twig\TwigTest $test)
Creating a testTwig::addTokenParser(\Twig\TokenParser\TokenParserInterface $parser)
Creating a token parserTwig::addExtension(\Twig\Extension\ExtensionInterface $extension)
Creating a extension
Read more in Twig for Template Designers.
Built-in Laravel Extensions
\DinhQuocHan\Twig\Extensions\Arr::class
\DinhQuocHan\Twig\Extensions\Auth::class
\DinhQuocHan\Twig\Extensions\Config::class
\DinhQuocHan\Twig\Extensions\Dump::class
\DinhQuocHan\Twig\Extensions\Gate::class
\DinhQuocHan\Twig\Extensions\Path::class
\DinhQuocHan\Twig\Extensions\Request::class
\DinhQuocHan\Twig\Extensions\Session::class
\DinhQuocHan\Twig\Extensions\Str::class
\DinhQuocHan\Twig\Extensions\Translator::class
\DinhQuocHan\Twig\Extensions\Url::class
Functions:
array_*
,data_*
,head
,last
auth
,auth_check
,auth_guest
,auth_user
,auth_guard
config
,config_get
,config_has
dump
,dd
can
,cant
,cannot
,allows
,denies
*_path
,mix
request
,request_has
,request_exists
,request_filled
,request_input
,request_query
,request_is
,current_url
,current_full_url
,current_full_url_with_query
,old
session
,session_has
,session_get
,session_put
,session_pull
,session_forget
,csrf_token
,csrf_field
,method_field
str_*
(All theStr::*
methods,snake_case
,camel_case
,studly_case
,kebab_case
)__
,trans
,trans_choice
action
,asset
,url
,route
,secure_url
,secure_asset
Filters:
*_path
,mix
str_*
(All theStr::*
methods,snake_case
,camel_case
,studly_case
,kebab_case
)__
,trans
,trans_choice
action
,asset
,url
,route
,secure_url
,secure_asset
Global variables:
app
: theIlluminate\Foundation\Application::class
object
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email contact@dinhquochan.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.