ホームページ >PHPフレームワーク >Laravel >laravelカスタムテンプレートディレクティブ-tojsについて

laravelカスタムテンプレートディレクティブ-tojsについて

藏色散人
藏色散人転載
2021-02-08 16:18:272736ブラウズ

以下は、Laravel のチュートリアルコラムで、laravel カスタムテンプレートの使い方を紹介するものです。

Blade ではコマンドをカスタマイズすることができ、ディレクティブメソッドを使用してコマンドを登録できます。 Blade コンパイラは、このコマンドを検出すると、引数を指定して提供されたコールバック関数を呼び出します。ブレード テンプレートは、ディレクティブ メソッドを通じてテンプレートの仕様をカスタマイズできます。

tojs ディレクティブは、主に PHP で一部のデータを js オブジェクトに変換し、js 呼び出しを容易にするために使用されます。 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 を宣言します。serviceProvider

providers を追加します。構成配列に

\App\Providers\ToJsServiceProvider::class


aliases を追加

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


5.呼び出しを便利にするために、PHP コードの必要な場所にヘルパー メソッド

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);
    }
}
Call を記述することができます

to_js([ 'username'=>'test'] );

ブレード テンプレートは、@tojs

<script> ウィンドウを通じてページ上に直接レンダリングできます。 .Laravel = {"ユーザー名":"テスト"}</script>

以上がlaravelカスタムテンプレートディレクティブ-tojsについての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。