>PHP 프레임워크 >Laravel >laravel 맞춤 템플릿 directive-tojs 정보

laravel 맞춤 템플릿 directive-tojs 정보

藏色散人
藏色散人앞으로
2021-02-08 16:18:272737검색

다음은 Laravel튜토리얼 칼럼에 실린 laravel custom template Instructions-tojs에 대한 소개입니다. 필요한 친구들에게 도움이 되었으면 좋겠습니다!

Blade를 사용하면 명령을 사용자 정의할 수 있습니다. 지시문 방법을 사용하여 명령을 등록할 수 있습니다. 블레이드 컴파일러가 이 명령을 만나면 제공된 콜백 함수를 인수와 함께 호출합니다. 블레이드 템플릿은 지시문 메서드를 통해 템플릿 사양을 사용자 정의할 수 있습니다.

tojs 지시어는 주로 PHP에서 일부 데이터를 사용자 정의하고 이를 js 호출을 용이하게 하기 위해 js 개체로 변환하는 데 사용됩니다. 2. ToJs 메서드는 주로 배열 작업

<?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>';
        });
    }
}
3. Facade

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

선언 4. 구성 배열에 serviceProvider

providers 추가

AppProvidersToJsServiceProvider::class

aliases 추가

'ToJs' => AppHelpersToJsFacadesToJsFacade: :class,


5. 호출의 편의를 위해 도우미 메서드를 작성할 수 있습니다.AppProvidersToJsServiceProvider::class

aliases 添加
'ToJs' => AppHelpersToJsFacadesToJsFacade::class,

5.为了方便调用可以在写一个helper方法

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

在PHP代码需要的地方调用 to_js(['username'=>'test']);

blade模板直接通过 @tojs 就可以在页面渲染出
<script> window.Laravel = {"username":"test"}</script>

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 ']); code>🎜🎜blade 템플릿은 <code>@tojs🎜<script> window.Laravel = {"username":"test"}를 통해 페이지에 직접 렌더링될 수 있습니다. 🎜

위 내용은 laravel 맞춤 템플릿 directive-tojs 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제