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
Requires
- php: ^8.2
- illuminate/view: ^12
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