Heim > PHP-Framework > Laravel > Hauptteil

Über benutzerdefinierte Laravel-Vorlagen-Direktiven-tojs

藏色散人
Freigeben: 2021-02-08 16:18:39
nach vorne
2701 Leute haben es durchsucht

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>';
        });
    }
}
Nach dem Login kopieren
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;
    }
}
Nach dem Login kopieren

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';
    }
}
Nach dem Login kopieren

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);
    }
}
Nach dem Login kopieren

在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!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage