laravel-admin实战做个简单的客户管理——表格中点击,带参数跳转。

    |     2021年2月10日   |   学习偶记   |     评论已关闭   |    80

首先使用laravel-admin命令生成站点表的基本控制器。

php artisan admin:make FrontSiteController --model=App\Models\FrontSite //用命令生成控制器。

表单生成我采用了api的方式,获取用户ID,我专门写了一篇,laravel-admin 模型表单简单使用api范例。其中站点logo需要上传图片,为了能让logo统一大小,进行裁剪,需要安装composer require intervention/image ,可以参看laravel-admin上传/显示图片这篇文章。

但是在实际应用中,查找用户名,然后添加站点的方式,不如直接在用户列表中,点击用户行直接跳转到添加站点中来的直接。

因为用户站点信息只有一个网站名称,一个url,还有一个logo,所以我想实现类似 laravel-admin中快捷创建的功能。文档:https://laravel-admin.org/docs/zh/2.x/model-table-quick-create

但是快捷创建中没有上传图片的组件,并且还需要和用户关联,所以采用自定义表单的方式。文档:https://laravel-admin.org/docs/zh/2.x/data-form

经过试验,发现这种方式对于我这个项目比较复杂,就做了一些变动。采用了前端组件,自定义了一个添加站点的页面。文档:https://laravel-admin.org/docs/zh/1.x/widgets#%E8%A1%A8%E5%8D%95

这个页面中的方法代码如下:

代码讲解:

  1. 这段代码中包含了一个云标签的数据,还有一个该用户的站点列表数据。所以看的时候注意。
  2. 方法中两个参数 id 就是用户的id,Content 相当于laravel-admin的一个空白页面,不过包含了顶部和左侧菜单栏。这个参数不用赋值,自动生成。所以加上路由后,直接执行 http://域名/add-site/ID即可。路由\app\Admin\routes.php添加:

  3. content的标题:title ,描述:description,右侧面包屑导航:breadcrumb
  4. 页面组件form必须use一下:

  5. $form->changeSubmit(); 是我自行写的方法,主要作用是替换form生成的submit,改成button属性,方面使用ajax,禁用$form->disablePjax();
    文件:\vendor\encore\laravel-admin\src\Widgets\Form.php

  6. content->view 使用自定义的视图,然后$from->render()生成html,填充进去。

在用户页面点击,直接获取id,直接执行 http://域名/add-site/ID即可。这个ID获取,是从grid()方法里,直接在列里使用$this->id获得行id(就是那个客户id)

噢!评论已关闭。