Blade の break および continue ステートメントをサポートするために、次のコードを Laravel プロジェクトに追加します。
コードは次のとおりです:
Blade::extend(function($value)
{
return preg_replace('/(\s*)@(break|continue)(\s*)/', '$1<?php $2; ?>$3', $value);
});
どこに置けばよいのか全くわかりません。助けていただけないでしょうか?
ベストアンサー1
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)
または を使用します@eval($var = 1)
。@eval($var++)
たとえば
5) 重要な注意
blade
テンプレートはキャッシュされているので、ブレードでダミーの変更を試みてください。こうすると、Laravel がテンプレートを再コンパイルします – sbedulin 2月9日 17:43
sbedulinのLaravel 5向けの素晴らしいソリューションに加えて
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 ドキュメント
動作しないでしょう。
の
例
修正されました。
例は削除されました。