lee-to/yii-blade

Blade template engine support

Fund package maintenance!
Boosty

Installs: 0

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/lee-to/yii-blade

0.2.0 2026-01-26 13:09 UTC

This package is auto-updated.

Last update: 2026-01-26 13:11:07 UTC


README

This package provides Laravel Blade template engine support for the Yii3 framework.

Requirements

  • PHP 8.2+
  • Yii3
  • Composer 2.5+

Installation

composer require lee-to/yii-blade

Or install via local path repository:

"repositories": [
    {
        "type": "path",
        "url": "packages/yii-blade",
        "options": {
            "versions": {
                "lee-to/yii-blade": "1.x-dev"
            },
            "symlink": true
        }
    }
]

Configuration

Configure the package in your config/params.php:

return [
    'lee-to/yii-blade' => [
        'paths' => [
            'default' => '@views',
            'admin' => '@views/admin',
        ],
        'cache_dir' => 'runtime/cache/blade/views',
        'component_namespaces' => [
            'App\\View\\Components' => 'x',
        ],
        'anonymous_component_namespaces' => [
            '@views/components' => 'x',
        ],
        'directives' => [
            // App\Blade\Directives\MyDirective::class,
        ],
    ],
];

Usage

Create a Blade template in your views directory:

{{-- views/hello.blade.php --}}
<h1>Hello, {{ $name }}!</h1>

@if($showGreeting)
    <p>Welcome to Yii3 with Blade!</p>
@endif

The package automatically registers as a renderer for .blade.php files.

Custom Directives

Create a custom directive by implementing DirectiveInterface:

<?php

namespace App\Blade\Directives;

use Closure;
use Leeto\YiiBlade\DirectiveInterface;
use Leeto\YiiBlade\DirectiveType;

final class DateTimeDirective implements DirectiveInterface
{
    public function getType(): DirectiveType
    {
        return DirectiveType::DEFAULT;
    }

    public function getName(): string
    {
        return 'datetime';
    }

    public function handler(): Closure
    {
        return fn(?string $expression): string => "<?php echo date('Y-m-d H:i:s', $expression); ?>";
    }
}

Register it in params:

'directives' => [
    App\Blade\Directives\DateTimeDirective::class,
],

Use in templates:

@datetime(time())

Directive Types

  • DirectiveType::DEFAULT - Standard directive (@name($expression))
  • DirectiveType::IF - Conditional directive (@name($condition) ... @endname)
  • DirectiveType::STRINGABLE - Stringable handler for custom object rendering

Features

  • Full Blade syntax support
  • Components and slots
  • Custom directives
  • Anonymous components
  • Template inheritance (@extends, @section, @yield)
  • Includes (@include, @each)
  • Conditionals (@if, @unless, @isset, @empty)
  • Loops (@foreach, @for, @while, @forelse)
  • And more...

License

MIT