关于laravel自定义模板指令-tojs
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于laravel自定义模板指令-tojs,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2421字,纯文字阅读大概需要4分钟。
内容图文
下面由Laravel教程栏目给大家介绍laravel自定义模板指令-tojs ,希望对需要的朋友有所帮助!
Blade 允许你自定义命令,你可以使用 directive 方法注册命令。当 Blade 编译器遇到该命令时,它将会带参数调用提供的回调函数。blade模板可以通过directive方法来自定义模板指定,
tojs指令主要用于PHP自定义一些数据转换为js对象方便js调用
1.创建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. ToJs方法主要是对数组的一些操作
<?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.声明facade
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'; } }
4.在config数组添加serviceProvider
providers 添加\App\Providers\ToJsServiceProvider::class
aliases 添加'ToJs' => \App\Helpers\ToJs\Facades\ToJsFacade::class,
5.为了方便调用可以在写一个helper方法
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的详细内容。
本文系统来源:https://www.php.cn/phpkj/laravel/470324.html内容总结
以上是互联网集市为您收集整理的关于laravel自定义模板指令-tojs全部内容,希望文章能够帮你解决关于laravel自定义模板指令-tojs所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。