laravel 拓展blade

扩展 Blade

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

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

<?php
namespace 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值