dinhquochan/laravel-twig

Twig Template for Laravel Framework
109,003 26
Install
composer require dinhquochan/laravel-twig
Latest Version:3.0.0
PHP:^8.0|^8.1|^8.2
License:MIT
Last Updated:Feb 29, 2024
Links: GitHub  ·  Packagist
Maintainer: dinhquochan

Laravel Twig

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.

Related Packages

gabrieloliverio/laravel5-generators

Database metadata-based generators for Laravel 5

1
erirk/paypalpayment

laravel-paypalpayment is simple package help you process direct credit card paym...

0
doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

631,580,251 9,707
laravel/framework

The Laravel Framework.

580,311,802 34,925
laravel/tinker

Powerful REPL for the Laravel framework.

489,754,436 7,444