这个问题卡了我很久,网上找到了参考也很少,在此记录一下。也希望能帮助到正在看的你。如有问题,欢迎指正
官方文档,关于Laravel-admin后台的表格和表单,都是基于模型(Model类)的。完全不符合我的需要,我上网找了很久demo,只找到一个有参考价值的。后续贴上
情况说明:
1.数据层面:不能建model。怎么办?
由于公司用的是用友系统自带(sql server )的库和表,比较复杂,初次尝试不敢随便折腾一个model出来。
只能用原始方法处理数据(用了借助构造器对数据库进行增删改查)。
那么问题就来了!这就意味着,不能用laravel-admin自带的模型表单,不能通过直接操作属性字段来调用数据。必须得自写页面,写的页面怎么能融入到这个框架里又是个问题,请继续往下看
2.页面需求:带日期筛选的form表单,有列表页(table),保留laravel-admin自带的侧边栏。
这样指定的页面,怎么渲染页面?
如果采取render方法,直接渲染页面,能完成任务,但是侧边栏丢了不能不符合需求;
如果使用框架文档中的content的body($content)方法,页面数据拿不到。
最后发现有个方法,见下面实例
说明:【路由定义】需要注意的地方,form的action请求,底层是ajax,和平时form action用法不太一样。当时用的时候,我是通过判断请求类型还渲染不同页面的,打印的时候发现,同一个页面,怎么既有get 又有post请求,两个分支都走了。很稀奇!
实例
定义路由
//route.php文件,定义路由
//框架默认点击走的是get请求(讲直白一点就是你点侧边栏的时候,那个是get请求)
$router->post('/queryfh', 'sfExpressController@queryfhOrder');
$router->get('/queryfh', 'sfExpressController@queryfhOrder');
页面思路
思路:就是通过laravel的渲染视图拿到里面的html,在通过框架的row方法渲染过去。发现view有一个render方法,可以之间渲染html
直接上代码:
//方法1:查询发货单
// if post分支就是自定义的页面,view()+render()+row()方法解决
// if get分支用了框架自带的form 用body方法去渲染页面,action 是ajax请求
public function queryfhOrder(Content $content)
{
$form = new Form;
if (request()->isMethod('post')) {
$dataArr = request()->post();
$orderArr = processfhOrderData($dataArr);
$orderView = view('admin.query_fh',['orderArr'=>$orderArr])->render();
return $content
->header('顺丰业务接口列表')
->description('显示 发货单(销售出库)')
->row($orderView);
}
if (request()->isMethod('get')) {
$form->action('queryfh');
$form->dateRange('date_from', 'date_to','制单日期');
return $content
->header('顺丰业务接口列表')
->description('查询 发货单(销售出库)')
->body($form);
}
}
界面图:
else分支
if分支:
最后特别感激这个帖子:Laravel-Admin 开发笔记
基本是全网,我只找到了这个,对我帮助很大。
如果你看到有类似的文章,欢迎你留言告诉我,谢谢
------------