/template-checker

[READ-ONLY] Check your TWIG and Latte templates

Primary LanguagePHPMIT LicenseMIT

Template Checker

Downloads total

Check your TWIG templates

Install

composer require symplify/template-checker --dev

Usage

Check Latte Templates

  • for existing classes
  • for existing class constants
  • for existing static calls
vendor/bin/template-checker check-latte-template templates

Check Twig Controller Paths

final class SomeController
{
    public function index()
    {
        return $this->render('does_path_exist.twig');
    }
}
vendor/bin/template-checker check-twig-render src/Controller

Extract Static Calls from Latte Templates to FilterProvider

Do you have a static call in your template? It's a hidden filter. Let's decouple it so we can use DI and services as in the rest of project:

vendor/bin/template-checker extract-latte-static-call-to-filter templates

But that's just a dry run... how to apply changes?

vendor/bin/template-checker extract-latte-static-call-to-filter templates --fix

What happens? The static call will be replaced by a Latte filter:

 # any latte file
-{\App\SomeClass::someStaticMethod($value)}
+{$value|someStaticMethod}

The filter will be provided

use App\Contract\Latte\FilterProviderInterface;
use App\SomeClass;

final class SomeMethodFilterProvider implements FilterProviderInterface
{
    public const FILTER_NAME = 'someMethod';

    public function __invoke(string $name): int
    {
        return SomeClass::someStaticMethod($name);
    }

    public function getName(): string
    {
        return self::FILTER_NAME;
    }
}

The file will be generated into /generated directory. Just rename namespaces and copy it to your workflow.

Do you want to know more about clean Latte filters? Read How to Get Rid of Magic, Static and Chaos from Latte Filters


Report Issues

In case you are experiencing a bug or want to request a new feature head over to the Symplify monorepo issue tracker

Contribute

The sources of this package are contained in the Symplify monorepo. We welcome contributions for this package on symplify/symplify.