首頁 > php框架 > Laravel > 關於laravel自訂範本指令-tojs

關於laravel自訂範本指令-tojs

藏色散人
發布: 2021-02-08 16:18:39
轉載
2708 人瀏覽過

下面由Laravel教學專欄為大家介紹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的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板