Maison > cadre php > Laravel > le corps du texte

À propos de la directive de modèle personnalisé Laravel-tojs

藏色散人
Libérer: 2021-02-08 16:18:39
avant
2702 Les gens l'ont consulté

Ce qui suit est une introduction aux instructions-tojs de modèles personnalisés Laravel de la colonne du didacticiel Laravel. J'espère que cela sera utile aux amis qui en ont besoin !

Blade vous permet de personnaliser les commandes. Vous pouvez utiliser la méthode directive pour enregistrer les commandes. Lorsque le compilateur Blade rencontre cette commande, il appellera la fonction de rappel fournie avec des arguments. Le modèle blade peut personnaliser la spécification du modèle via la méthode de directive. La directive

tojs est principalement utilisée en PHP pour convertir certaines données en objets js afin de faciliter les appels js

1. Créer 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>';
        });
    }
}
Copier après la connexion

2. La méthode ToJs effectue principalement certaines opérations sur le tableau

<?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;
    }
}
Copier après la connexion

3 Déclarer la façade

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';
    }
}
Copier après la connexion

Ajouter un serviceProvider

fournisseurs. au tableau de configuration Ajoutez des
AppProvidersToJsServiceProvider::class

alias Ajoutez
'ToJs' => AppHelpersToJsFacadesToJsFacade::class,

5 Pour plus de commodité, vous pouvez écrire une méthode d'assistance

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);
    }
}
Copier après la connexion

et. appelez-le si nécessaire dans le code PHPto_js(['username'=>'test']);

le modèle de lame peut être rendu @tojs
<script> window.Laravel = {"username":"test"}</script> sur la page directement via

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal