• laravel-admin的3个开发细节调整


    在使用laravel-admin开发的过程中,根据官方开发文档Laravel admin | laravel-admin基本都能实现想要的效果,这里补充3个文档上没有描述的细节

    Laravel8命令行创建控制器调整


    在laravel-admin中可以使用php artisan admin:make UserController --model=App\User命令创建后台控制器,后面的--model是绑定的模型,它会根据model对应表的字段,默认构建出所需的grid,form和show三个页面的代码,但是由于laravel8模型额目录不再是App,而是App\Models,所以命令后面的模型路径也要修改为php artisan admin:make UserController --model=App\Models\User,否则会报错The "--model" option does not exist.

    全局model时间格式设置


    方法一:使用默认时间格式

    如果想使用默认的2020-03-04 16:11:00格式,在你的模型里面引入Encore\Admin\Traits\DefaultDatetimeFormat,然后use DefaultDatetimeFormat;

    use Encore\Admin\Traits\DefaultDatetimeFormat;
    
    class User extends Model
    {
        use DefaultDatetimeFormat;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    方法二:自定义时间格式

    • 1.在App目录下新建目录Traits,然后新建文件SerializeDate.php,文件内容如下
    
    
    namespace App\Traits;
    
    use DateTimeInterface;
    
    trait SerializeDate
    {
        /**
         * 为 array / JSON 序列化准备日期格式
         *
         * @param  \DateTimeInterface  $date
         * @return string
         */
        protected function serializeDate(DateTimeInterface $date)
        {
            return $date->format('Y-m-d H:i:s');
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 2.在model中use SerializeDate即可

      
      
      namespace App\Models;
      
      use app\Traits\SerializeDate;
      
      class Users extends Model
      {
          use HasFactory,SerializeDate;
          
          //
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12

    全局语言本地化


    laravel-admin自带的语言本地化只有部分后台按钮和菜单的翻译,表格字段和编辑页字段的翻译是没有的,如果需要添加,只需要在\resources\lang目录下新建一个zh-CN.json文件,然后用__()方法使用即可,这样的话,其它控制器也能复用这里的翻译

    zh-CN.json文件内容格式如下:

    {
        "Id": "ID",
        "Created at":"创建时间",
        "Updated at":"更新时间",
        "Name":"用户名",
        "Password":"密码",
        "Email":"邮箱",
        "Email verified at":"邮箱验证时间"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    使用:

    
    
    namespace App\Admin\Controllers;
    
    use App\Models\User;
    use Encore\Admin\Controllers\AdminController;
    use Encore\Admin\Form;
    use Encore\Admin\Grid;
    use Encore\Admin\Show;
    
    class UserController extends AdminController
    {
        /**
         * Title for current resource.
         *
         * @var string
         */
        protected $title = '用户';
    
        /**
         * Make a grid builder.
         *
         * @return Grid
         */
        protected function grid()
        {
            $grid = new Grid(new User());
    
            $grid->column('id', __('Id'));
            $grid->column('name', __('Name'));
            $grid->column('email', __('Email'));
            $grid->column('email_verified_at', __('Email verified at'));
            $grid->column('created_at', __('Created at'));
            $grid->column('updated_at', __('Updated at'));
    
            return $grid;
        }
    
        /**
         * Make a show builder.
         *
         * @param mixed $id
         * @return Show
         */
        protected function detail($id)
        {
            $show = new Show(User::findOrFail($id));
    
            $show->field('id', __('Id'));
            $show->field('name', __('Name'));
            $show->field('email', __('Email'));
            $show->field('email_verified_at', __('Email verified at'));
            $show->field('password', __('Password'));
            $show->field('remember_token', __('Remember token'));
            $show->field('created_at', __('Created at'));
            $show->field('updated_at', __('Updated at'));
    
            return $show;
        }
    
        /**
         * Make a form builder.
         *
         * @return Form
         */
        protected function form()
        {
            $form = new Form(new User());
    
            $form->text('name', __('Name'));
            $form->email('email', __('Email'));
            $form->datetime('email_verified_at', __('Email verified at'))->default(date('Y-m-d H:i:s'));
            $form->password('password', __('Password'));
            $form->text('remember_token', __('Remember token'));
    
            return $form;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78

    多标签页扩展

    [ichynul/iframe-tabs: laravel-admin]使用tab控制多个iframe打开多页面(Use tabs to control multiple iframes to open multiple pages) (github.com)

    效果:

  • 相关阅读:
    Spring Security OAuth2之认证服务中心与资源服务器结合公钥与私钥进行令牌发放与校验、以及JDBC方式下的多客户端授权
    数据结构之B树
    分享一下怎么做小程序营销活动
    在阿里做前端程序员,我是这样规划的
    JavaSE => 类和对象 (二)
    NodeJS原生后台开发教程
    化工行业调研:有机硅胶市场现状及规模分析
    React v6(仅支持函数组件,不支持类组件)与v5版本路由使用详情和区别(详细版)
    在HbuilderX中,@tap和@click的含义 与 区别 及 使用方式
    极智开发 | CUDA线程模型与全局索引计算方式
  • 原文地址:https://blog.csdn.net/C_jian/article/details/136183730