在哪里放置Blade :: extend?

15 浏览
0 Comments

在哪里放置Blade :: extend?

我想在我的Laravel项目中添加以下代码来支持Blade中的break和continue语句。

代码如下:

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

然而我不知道应该将它放在哪里,希望能得到帮助。

admin 更改状态以发布 2023年5月21日
0
0 Comments

没有要求你应该把代码放在哪里,你甚至可以把它放在你的routes.php文件中(当然这有点乱),你只需要确保当 Laravel 处理页面视图时它被加载即可。

在这种情况下,创建一个新的blade_extensions.php文件并在start/global.php中引入它可能是个不错的解决方案。

PS: 请确保清除已编译的视图,因为 Blade 仅在检测到更改时重新编译视图,因此如果你刚刚粘贴了这段代码,它不会起作用,直到你清除了视图。

0
0 Comments

Laravel 5的替代方案

1)创建app/Providers/BladeServiceProvider.php

createOpenMatcher('datetime');
            return preg_replace($pattern, '$1format(\'m/d/Y H:i\')); ?>', $view);
        });
        /* @eval($var++) */
        \Blade::extend(function($view)
        {
            return preg_replace('/\@eval\((.+)\)/', '', $view);
        });
    }
    public function register()
    {
        //
    }
}

2)在config/app.php中添加

 [
        // ...
        'App\Providers\BladeServiceProvider',

3)运行php artisan clear-compiled

4)在您的模板中使用@datetime($updated_at)@eval($var = 1),例如@eval($var++)

5)重要提醒

blade模板会被缓存,请尝试在blade中进行虚拟更改,这样Laravel将重新编译模板 - sbedulin Feb 9 at 17:43

除sbedulin的Laravel 5解决方案之外

a)运行php artisan clear-compiled可能会有所帮助

b)我更改了以下代码

$pattern = $compiler->createOpenMatcher('datetime');

return preg_replace($pattern, '$1format(\'m/d/Y H:i\')); ?>', $view);

因为Laravel 5文档中的示例将不起作用。

现在已经更正了示例

该示例已被删除。

0