ホームページ >PHPフレームワーク >Laravel >laravelカスタムテンプレートディレクティブ-tojsについて
以下は、Laravel のチュートリアルコラムで、laravel カスタムテンプレートの使い方を紹介するものです。
2 を作成します。ToJs メソッドは主に配列Blade ではコマンドをカスタマイズすることができ、ディレクティブメソッドを使用してコマンドを登録できます。 Blade コンパイラは、このコマンドを検出すると、引数を指定して提供されたコールバック関数を呼び出します。ブレード テンプレートは、ディレクティブ メソッドを通じてテンプレートの仕様をカスタマイズできます。
tojs ディレクティブは、主に PHP で一部のデータを js オブジェクトに変換し、js 呼び出しを容易にするために使用されます。 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>'; }); } }
<?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; } }
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'; } }
aliases を追加
5.呼び出しを便利にするために、PHP コードの必要な場所にヘルパー メソッド
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 を記述することができます
ブレード テンプレートは、
@tojs
<script> ウィンドウを通じてページ上に直接レンダリングできます。 .Laravel = {"ユーザー名":"テスト"}</script>
以上がlaravelカスタムテンプレートディレクティブ-tojsについての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。