Heim  >  Artikel  >  PHP-Framework  >  Über benutzerdefinierte Laravel-Vorlagen-Direktiven-tojs

Über benutzerdefinierte Laravel-Vorlagen-Direktiven-tojs

藏色散人
藏色散人nach vorne
2021-02-08 16:18:272694Durchsuche

Das Folgende ist eine Einführung in die Anleitungen für benutzerdefinierte Laravel-Vorlagen aus der LaravelTutorial-Kolumne. Ich hoffe, dass es für Freunde hilfreich sein wird, die es brauchen!

Mit Blade können Sie Befehle anpassen. Sie können die Direktivenmethode verwenden, um Befehle zu registrieren. Wenn der Blade-Compiler auf diesen Befehl stößt, ruft er die bereitgestellte Rückruffunktion mit Argumenten auf. Die Blade-Vorlage kann die Vorlagenspezifikation über die Anweisungsmethode anpassen. Die

tojs-Anweisung wird hauptsächlich in PHP verwendet, um einige Daten anzupassen und sie in ein JS-Objekt zu konvertieren

1 Erstellen Sie einen 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. Die ToJs-Methode dient hauptsächlich der Array-Operation

<?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. Deklarieren Sie die Fassade

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. Fügen Sie serviceProvider

providers im Konfigurationsarray hinzu >'ToJs' => AppHelpersToJsFacadesToJsFacade: :class,


5. Zur Vereinfachung des Aufrufs können Sie eine Hilfsmethode schreibenAppProvidersToJsServiceProvider::class

aliases 添加
'ToJs' => AppHelpersToJsFacadesToJsFacade::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>rrreee

Call to_js(['username'=>'test ']); code>🎜🎜Blade-Vorlage kann direkt über <code>@tojs🎜<script> gerendert werden </script>🎜

Das obige ist der detaillierte Inhalt vonÜber benutzerdefinierte Laravel-Vorlagen-Direktiven-tojs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen