91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-02-23 13:42:03 來源:億速云 閱讀:197 作者:小新 欄目:編程語言

小編給大家分享一下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

涿鹿县| 黑水县| 宝鸡市| 含山县| 新宁县| 沅江市| 库伦旗| 雅安市| 保康县| 温宿县| 德州市| 巴青县| 阿拉善盟| 开远市| 赤峰市| 南部县| 玛多县| 肥东县| 株洲县| 深水埗区| 进贤县| 桂阳县| 宁阳县| 岳阳市| 微山县| 鱼台县| 保亭| 鸡泽县| 娱乐| 册亨县| 马山县| 商水县| 奈曼旗| 察雅县| 夏津县| 宜兰市| 青川县| 锡林浩特市| 灌南县| 罗江县| 临漳县|