laravel自定义模板命令

转载 2018年04月17日 18:08:17

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.app数组添加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后端框架

Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力
  • 2018年03月13日 14:15

laravel Blade 模板引擎 命令

来源:http://laravel-recipes.com/recipes/248/knowing-all-the-blade-template-commands Knowing All the B...
  • kendyhj9999
  • kendyhj9999
  • 2015-06-05 18:08:14
  • 1617

laravel自定义分页样式

自定义页码数量分页,PHP laravel框架 自定义分页模板文件
  • u011897510
  • u011897510
  • 2017-09-03 16:39:21
  • 308

laravel自定义错误输出的内容

laravel对于提交的数据进行验证,怎么自定义错误输出的内容 在根目录下运行命令 php artisan make:request PostUpdateRequest 会在app\Http\Requ...
  • a454213722
  • a454213722
  • 2016-05-15 12:00:03
  • 2549

Laravel5.2 手动分页以及自定义样式

Laravel5.2 手动分页以及自定义样式
  • a8927747
  • a8927747
  • 2016-10-26 12:30:51
  • 2943

在 Laravel 的 Blade 模版中定义变量

有时候我们需要在 Laravel 的 Blade 模版中定义一些变量,而 Blade 却没有提供这样的方法,所以我们这里为大家分享两种可以实现在 Blade 模版中定义变量的方法。 方法一 由...
  • beyond__devil
  • beyond__devil
  • 2017-07-01 16:56:13
  • 2241

Laravel 添加自定义全局函数

第一步:在app目录下建立Common文件夹,在文件夹中创建helpers.php 第二步:在artisan中引入require __DIR__.'/app/Common/helpers.php';自...
  • qq_14855277
  • qq_14855277
  • 2016-02-03 17:13:08
  • 4543

Laravel 5.3 新特性系列 —— Blade 模板新增 $loop 变量

什么是Blade指令? Laravel的Blade模板语言提供了指令功能,这些指令其实是一些自定义标签 —— 以@开头,通常用于控制结构。如果你用Blade写过模板,就会对形如@if、@fo...
  • wulove52
  • wulove52
  • 2017-05-04 17:47:46
  • 544

Laravel 5.3+ 重置密码邮件的样式及内容修改 (Notifications的使用)

Laravel里我们可以使用php artisan make:auth来生成一套默认的登陆注册重置邮箱的Authentication System,但是如何修改系统发送给用户的重置密码邮件的样式和内容...
  • lgyaxx
  • lgyaxx
  • 2017-08-02 10:19:49
  • 2126

Laravel 自定义错误页面

laravel 5.2Laravel默认的错误页面如下: 1、调试模式: 2、live模式 这样的页面在本地调试还好,上线后非常不友好,那么自定义吧。。所有异常错误都由类App\Exceptio...
  • hxx_yang
  • hxx_yang
  • 2016-07-14 17:42:22
  • 7061
收藏助手
不良信息举报
您举报文章:laravel自定义模板命令
举报原因:
原因补充:

(最多只允许输入30个字)