您好,登錄后才能下訂單哦!
小編給大家分享一下laravel自定義模板指令-tojs的示例,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
Blade 允許你自定義命令,你可以使用 directive 方法注冊命令。當 Blade 編譯器遇到該命令時,它將會帶參數調用提供的回調函數。blade模板可以通過directive方法來自定義模板指定,
tojs指令主要用于PHP自定義一些數據轉換為js對象方便js調用
<?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'; } }
providers 添加\App\Providers\ToJsServiceProvider::class
aliases 添加'ToJs' => \App\Helpers\ToJs\Facades\ToJsFacade::class,
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); } }
在PHP代碼需要的地方調用 to_js(['username'=>'test']);
blade模板直接通過 @tojs
就可以在頁面渲染出<script> window.Laravel = {"username":"test"}</script>
看完了這篇文章,相信你對“laravel自定義模板指令-tojs的示例”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。