Laravel 5の代替
1) 作成するapp/Providers/BladeServiceProvider.php
<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class BladeServiceProvider extends ServiceProvider
{
public function boot()
{
/* @datetime($var) */
\Blade::extend(function($view, $compiler)
{
$pattern = $compiler->createOpenMatcher('datetime');
return preg_replace($pattern, '$1<?php echo $2->format(\'m/d/Y H:i\')); ?>', $view);
});
/* @eval($var++) */
\Blade::extend(function($view)
{
return preg_replace('/\@eval\((.+)\)/', '<?php ${1}; ?>', $view);
});
}
public function register()
{
//
}
}
2)config/app.php
さらに
<?php
return [
// ...
'providers' => [
// ...
'App\Providers\BladeServiceProvider',
3) 走るphp artisan clear-compiled
4) テンプレートで@datetime($updated_at)
or@eval($var = 1)
を使用します。@eval($var++)
たとえば、
5) 重要事項
blade
テンプレートがキャッシュされている場合は、ブレードにダミーの変更を加えてみてください。このようにして、laravel はテンプレートを再コンパイルします – sbedulin 2 月 9 日 17:43
Laravel 5 向けの sbedulin の優れたソリューションに加えて
a)実行php artisan clear-compiled
が役立つ場合があります
b) のコードを変更しました
$pattern = $compiler->createOpenMatcher('datetime');
と
return preg_replace($pattern, '$1<?php echo $2->format(\'m/d/Y H:i\')); ?>', $view);
Laravel 5 ドキュメントの例は機能しないためです。
例は現在修正されています。
例は削除されました。