Laravel admin 使用经历
php.ini
遇到的情形
在做《驾考题库》小程序的时候,遇到的问题,后台需要上传视频,本地可以上传,但是线上服务器始终上传失败。
根据报错,在 issues 上找到的的答案
https://github.com/z-song/laravel-admin/issues/2018
断定配置文件中上传文件大小做了限制
cli 形式的 php.ini
配置

cli 形式的 php.ini
配置

需要更改的配置

模型表单--ignore
有的时候再模型表单里面需要忽略掉一些不存在与数据库,或者不需要的字段,会用到
$form->ignore(['column1', 'column2', 'column3']);
,但是要在保存回调里面再次用到组装或者拼接呢?
https://github.com/z-song/laravel-admin/issues/1711
三种情况
- 被
ignore
的字段,在保存回调中的获取的办法request('field')
- 没有被
ignore
的字段,在保存回调中的获取的办法$form->field
- 取到值之后,再去设置值,
$form->model()->setAttribute('field', 'value')
模型表单--listbox
在后台使用过程中,
listbox
用作多对多模型,比如一篇文章(article)可以有多个标签(tag),一个标签也可以属于多个文章。
使用方法
$form->listbox($column[, $label])->options([1 => 'foo', 2 => 'bar', 'val' => 'Option name']);
我在项目中遇到的痛点
一个活动专题下面,有多个商品,但是活动专题页面分版块,就是一个活动专题下,有限拍区,还有秒拍区,每个区下面有多个商品。于是在中间表中加了一个字段 theme_type
来做区分。

但是在后台用到 listbox
方法就需要额外的处理了
$form->saving(function (Form $form) {
$form->top_products = collect($form->top_products)->filter()->mapWithKeys(function($item){
return [$item => ['theme_type' => 0]];
})->all();
$form->bottom_products = collect($form->bottom_products)->filter()->mapWithKeys(function($item){
return [$item => ['theme_type' => 1]];
})->all();
});
模型表单-- 文件/图片上传
'disks' => [
... ,
'admin' => [
'driver' => 'local',
'root' => public_path('uploads'),
'visibility' => 'public',
'url' => env('APP_URL').'/uploads',
],
],
这是 laravel admin 官网配置示例,文件位于 config/filesystems.php
,在此建议改为
'root' => public_path('/storage'),
因为我们的项目大部分用的是 laravel 5.5 ,在使用 deploy
部署的时候,默认会有共享文件夹和文件
// Laravel shared dirs
set('shared_dirs', [
'storage',
]);
// Laravel shared file
set('shared_files', [
'.env',
]);
把文件上传到storage可以方便改写权限,也不用把上传的图片加入到版本控制当中。
网友评论