Vin*_*ent 19 php laravel blade
我想将以下代码添加到我的laravel项目中以支持blade中的break和continue语句.
这是代码:
Blade::extend(function($value)
{
return preg_replace('/(\s*)@(break|continue)(\s*)/', '$1<?php $2; ?>$3', $value);
});
Run Code Online (Sandbox Code Playgroud)
我不知道在哪里放置它,任何帮助将不胜感激?
slp*_*slp 32
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()
{
//
}
}
Run Code Online (Sandbox Code Playgroud)
2)config/app.php
补充说
<?php
return [
// ...
'providers' => [
// ...
'App\Providers\BladeServiceProvider',
Run Code Online (Sandbox Code Playgroud)
3)跑 php artisan clear-compiled
4)在您的模板中使用@datetime($updated_at)
或者@eval($var = 1)
,@eval($var++)
例如
5)重要的评论
blade
模板被缓存,尝试在刀片上进行虚拟更改,这样laravel将重新编译模板 - sbedulin 2月9日17:43
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文档中的示例不起作用.
该示例现在已得到纠正.
该示例已被删除.
cir*_*van 19
没有要求告诉你应该把代码放在哪里,你甚至可以把它放在你的routes.php
(当然这有点乱).您只需确保在laravel处理页面视图时加载它.
在这种情况下,在blade_extensions.php
某处创建新文件并将其包含在内start/global.php
可能是一个很好的解决方案.
PS:请务必清除已编译的视图,因为Blade只会在检测到更改时重新编译视图,因此,如果您只是修改了此代码,则在清除视图之前它将无法工作.
Laravel 5更新:
1)您可能希望Extensions\BladeExtensions.php
在与Models, Providers, Services
文件夹相同的级别上创建文件夹\文件
2) BladeExtensions.php
<?php namespace App\Extensions;
class BladeExtensions {
public static function register()
{
\Blade::extend(function($view, $compiler)
{
$pattern = $compiler->createMatcher('datetime');
return preg_replace($pattern, '$1<?php echo $2->format(\'m/d/Y H:i\'); ?>', $view);
});
}
}
Run Code Online (Sandbox Code Playgroud)
3) AppServiceProvider.php
// ...
use App\Extensions\BladeExtensions;
class AppServiceProvider extends ServiceProvider
{
// ...
public function register()
{
// ...
BladeExtensions::register();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14823 次 |
最近记录: |