亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

安龙县| 屏山县| 宜都市| 濉溪县| 黔南| 北安市| 阜新| 白玉县| 遵义市| 凌云县| 鹰潭市| 全椒县| 葵青区| 佛冈县| 广州市| 沅江市| 扎赉特旗| 浪卡子县| 浦北县| 金湖县| 岳阳市| 株洲市| 鲁甸县| 视频| 浦东新区| 东平县| 江北区| 筠连县| 大方县| 武冈市| 龙泉市| 讷河市| 枣强县| 望都县| 将乐县| 东海县| 视频| 四会市| 婺源县| 宣恩县| 凌海市|