温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

laravel自定义模板指令-tojs的示例

发布时间:2021-02-23 13:42:03 来源:亿速云 阅读:238 作者:小新 栏目:编程语言

小编给大家分享一下laravel自定义模板指令-tojs的示例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

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

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

1.创建ToJsServiceProvider

<?php namespace 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方法主要是对数组的一些操作

<?php namespace 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>

看完了这篇文章,相信你对“laravel自定义模板指令-tojs的示例”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI