应该将 Blade::extend 放置于哪个文件中?

  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

  1. 在模板中使用自定义的方法,例: 

    @datetime($updated_at)
    // 或者
    @eval($var = 1)
    @eval($var++)

  2. 注意

    blade 模板是会被框架缓存的, 尝试在模板中进行虚拟的更改,这样框架会重新编译模板

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://stackoverflow.com/questions/1832...

译文地址:https://learnku.com/laravel/t/62140

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!