关于laravel自定义模板指令-tojs

2022-05-15 0 361

下面由Laravel教程栏目给大家介绍laravel自定义模板指令-tojs ,希望对需要的朋友有所帮助!

Blade 允许你自定义命令,你可以使用 directive 方法注册命令。当 Blade 编译器遇到该命令时,它将会带参数调用提供的回调函数。blade模板可以通过directive方法来自定义模板指定,

tojs指令主要用于PHP自定义一些数据转换为js对象方便js调用

1.创建ToJsServiceProvider

<?phpnamespace App\\Providers;use App\\Helpers\\ToJs\\ToJs;use Illuminate\\Support\\Facades\\Blade;use Illuminate\\Support\\ServiceProvider;class ToJsServiceProvider extends ServiceProvider{    /**     * Bootstrap the application services.     *     * @return void     */    public function boot()    {        //    }    /**     * Register the application services.     *     * @return void     */    public function register()    {        $this->app->singleton('tojs', function () {            return new ToJs();        });        /*        * The block of code inside this directive indicates        * the chosen javascript variables.        */        Blade::directive('tojs', function () {            return '<script> window.Laravel = ' . json_encode(app('tojs')->get()) . '</script>';        });    }}

2. ToJs方法主要是对数组的一些操作

<?phpnamespace App\\Helpers\\ToJs;use Illuminate\\Support\\Arr;class ToJs{    protected $data = [];    public function put(array $data)    {        foreach ($data as $key => $value) {            $this->data[$key] = value($value);        }        return $this;    }    public function get($key = null, $default = null)    {        if (!$key) return $this->data;        return Arr::get($this->data, $key, $default);    }    public function forget($keys)    {        Arr::forget($this->data, $keys);        return $this;    }}

3.声明facade

namespace App\\Helpers\\ToJs\\Facades;use Illuminate\\Support\\Facades\\Facade;class ToJsFacade extends Facade{    /**     * Get the registered name of the component.     *     * @return string     */    protected static function getFacadeAccessor()    {        return 'tojs';    }}

4.在config数组添加serviceProvider

providers 添加
\\App\\Providers\\ToJsServiceProvider::class

aliases 添加
'ToJs' => \\App\\Helpers\\ToJs\\Facades\\ToJsFacade::class,

5.为了方便调用可以在写一个helper方法

if (!function_exists('to_js')) {    /**     * Access the javascript helper.     */    function to_js($key = null, $default = null)    {        if (is_null($key)) {            return app('tojs');        }        if (is_array($key)) {            return app('tojs')->put($key);        }        return app('tojs')->get($key, $default);    }}

在PHP代码需要的地方调用 to_js(['username'=>'test']);

blade模板直接通过 @tojs 就可以在页面渲染出
<script> window.Laravel = {"username":"test"}</script>

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

【声明:根据2013年1月30日《计算机软件保护条例》2次修订第17条规定: 为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存 储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬! 鉴于此,也希望大家按此说明研究软件!】
本站所有源码尽量保证原汁原味,如有特殊情况会作出声明及标注,网站资源不做任何二次加密(原版加密除外,不影响程序使用的不会做解密处理),方便您更好的学习参考。 在您的能力范围内,为了大环境的良性发展,请尽可能的选择正版资源。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

即刻码站__国内靠谱的站长资源下载平台 php教程 关于laravel自定义模板指令-tojs https://www.jike1995.com/36630.html

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务