Maison  >  Article  >  cadre php  >  À propos de la directive de modèle personnalisé Laravel-tojs

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

藏色散人
藏色散人avant
2021-02-08 16:18:272695parcourir

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>';
        });
    }
}

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;
    }
}

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';
    }
}

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);
    }
}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer