gpt4 book ai didi

php - 在哪里放置 Blade::extend

转载 作者:IT王子 更新时间:2023-10-29 00:09:26 27 4
gpt4 key购买 nike

我想将以下代码添加到我的 laravel 项目中,以支持 Blade 中的 break 和 continue 语句。

这是代码:

Blade::extend(function($value)
{
return preg_replace('/(\s*)@(break|continue)(\s*)/', '$1<?php $2; ?>$3', $value);
});

我不知道在哪里放置它,任何帮助将不胜感激?

最佳答案

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 templates are cached, try to make a dummy change in blade, this way laravel will recompile the template – sbedulin Feb 9 at 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 Documentation 中的示例不会工作。

example现已更正。

示例已删除。

关于php - 在哪里放置 Blade::extend,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18329541/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com