dinhquochan/laravel-twig

Twig Template for Laravel Framework

3.0.0 2023-02-14 02:57 UTC

This package is auto-updated.

Last update: 2024-03-29 07:05:15 UTC


README

Latest Version on Packagist tests Total Downloads

Allows you to use Twig in Laravel.

Requirements

  • PHP >= 8.0
  • Laravel >= 9.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:

class AppServiceProvider extends ServiceProvider
{
    //

    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 global
  • Twig::addFilter(\Twig\TwigFilter $filter) Creating a filter
  • Twig::addFunction(\Twig\TwigFunction $function) Creating a function
  • Twig::addTest(\Twig\TwigTest $test) Creating a test
  • Twig::addTokenParser(\Twig\TokenParser\TokenParserInterface $parser) Creating a token parser
  • Twig::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 the Str::* 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 the Str::* methods, snake_case, camel_case, studly_case, kebab_case)
  • __, trans, trans_choice
  • action, asset, url, route, secure_url, secure_asset

Global variables:

  • app: the Illuminate\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.