laravel 拓展blade

来源:互联网 发布:为知笔记 设置分享密码 编辑:程序博客网 时间:2024/06/12 01:21

扩展 Blade

Blade 允许你自定义一些指令,你可以使用 directvie 方法来注册指令。当 Blade 编译器遇到该指令时,它会自动的调用该指令注册时提供的回调函数并传递它的参数。

下面的例子创建了 @datetime($val) 指令来格式化 $val:

<?phpnamespace App\Providers;use Blade;use Illuminate\Support\ServiceProvider;class AppServiceProvider extends ServiceProvider{  /**   * Perform post-registration booting of services.   *   * @return void   */   public function boot()   {     Blade::directive('datetime', function ($expression) {       return "<?php echo with{$express}->format('m/d/Y H:i'); ?>";     });   }   /**    * Register bindings in the container    *    * @return void    */    public function register()    {      //    }}

上面的例子中使用了 Laravel 的 with 帮助方法,它只是简单的返回一个所提供的对象或值,并提供方便的链式调用。最终该指令生成的 PHP 代码如下:

  <?php echo with($var)->format('m/d/Y H:i'); ?>

在你更新 Blade 指令的逻辑之后,你应该删除所有已缓存的 Blade 视图,你可以使用 view:clear Artisan 命令来清除。



文/Dearmadman(简书作者)
原文链接:http://www.jianshu.com/p/7d65f9eb94be
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。




<?php namespace Modules\Manage\Http\Middleware;use Closure;use Blade;use Pingpong\Modules\ModulesServiceProvider;use App\Common\Helpers\Helper;/** * 初始化中间件 * Class Initialize * @package Modules\Manage\Http\Middleware */class Initialize {    /**     * Handle an incoming request.     *     * @param  \Illuminate\Http\Request $request     * @param  \Closure $next     * @return mixed     */    public function handle($request, Closure $next) {        /**         * 注册模板路径         */        view()->addLocation(base_path('modules/Manage/Resources/views/'));        /*        * 添加快捷标签        */        Blade::directive('css', function ($expression) {            $expression = Helper::parseHtmlTags($expression, 'assets/manage/css/');            return "<?php echo Html::style{$expression} ?>";        });        Blade::directive('js', function ($expression) {            $expression = Helper::parseHtmlTags($expression, 'assets/manage/js/');            return "<?php echo Html::script{$expression} ?>";        });        Blade::directive('img', function ($expression) {            $expression = Helper::parseHtmlTags($expression, 'assets/manage/images/');            return "<?php echo asset($expression) ?>";        });        //权限标签        Blade::directive('per', function ($expression) {            return "<?php  if (\\App\\Models\\Manager::checkAbility{$expression}) :  ?>";        });        Blade::directive('endper', function () {            return "<?php  endif;  ?>";        });        $breadcrumbs = base_path('modules/Manage/Http/Breadcrumbs.php');        if (file_exists($breadcrumbs)) {            require $breadcrumbs;        }        return $next($request);    }}

0 0