作为程序员一定要保持良好的睡眠,才能好编程

laravel_admin常见命令一览信息

发布时间:2019-12-19







一对多  多对多

https://laravel-admin.org/docs/zh/model-grid.md





添加列


// 直接通过字段名`username`添加列

$grid->username('用户名');


// 效果和上面一样

$grid->column('username', '用户名');


// 显示JSON内嵌字段

$grid->column('profile->mobile', '手机号');


// 添加多列

$grid->columns('email', 'username' ...);



添加数据查询条件

默认情况下,表格的数据没有任何查询条件,可以使用model()方法来给当前表格数据添加查询条件:


$grid->model()->where('id', '>', 100);


$grid->model()->whereIn('id', [1, 2, 3]);


$grid->model()->whereBetween('votes', [1, 100]);


$grid->model()->whereColumn('updated_at', '>', 'created_at');


$grid->model()->orderBy('id', 'desc');


$grid->model()->take(100);




添加路由器

使用下面的命令来创建一个对应App\User模型的路由器


php artisan admin:make UserController --model=App\\User


// 在windows系统中

php artisan admin:make UserController --model=App\User

上面的命令会创建路由器文件app/Admin/Controllers/UserController.php.




===============================行内编辑=========================================

数据表格有一系列方法,来帮助你列表里面直接对数据进行编辑。



editable

用editable方法,可以让你在表格中点击数据,在弹出的对话框里面编辑保存数据,使用方法如下


text输入

$grid->column('title')->editable();


textarea输入

$grid->column('title')->editable('textarea');


select选择

第二个参数是select选择的选项


$grid->column('title')->editable('select', [1 => 'option1', 2 => 'option2', 3 => 'option3']);


日期选择

$grid->column('birth')->editable('date');


日期时间选择

$grid->column('published_at')->editable('datetime');


年份选择

$grid->column('year')->editable('year');


月份选择

$grid->column('month')->editable('month');


日选择

$grid->column('day')->editable('day');


switch开关

注意:在grid中对某字段设置了switch,同时需要在form里面对该字段设置同样的switch


快速将列变成开关组件,使用方法如下:


$grid->('status')->switch();


// 设置text、color、和存储值

$states = [

    'on'  => ['value' => 1, 'text' => '打开', 'color' => 'primary'],

    'off' => ['value' => 2, 'text' => '关闭', 'color' => 'default'],

];

$grid->column('status')->switch($states);



switchGroup 开关组

注意:在grid中对某些字段设置了switch,同时需要在form里面对这些字段设置同样的switch


快速将列变成开关组件组,使用方法如下:


$states = [

    'on' => ['text' => 'YES'],

    'off' => ['text' => 'NO'],

];


$grid->column('switch_group')->switchGroup([

    'hot'       => '热门',

    'new'       => '最新'

    'recommend' => '推荐',

], $states);



radio


将该列设置为radio组件,同时需要在form方法里面对这些字段设置同样的radio


$grid->column('options')->radio([

    1 => 'Sed ut perspiciatis unde omni',

    2 => 'voluptatem accusantium doloremque',

    3 => 'dicta sunt explicabo',

    4 => 'laudantium, totam rem aperiam',

]);




checkbox


将该列设置为checkbox组件,同时需要在form方法里面对这些字段设置同样的checkbox


$grid->column('options')->checkbox([

    1 => 'Sed ut perspiciatis unde omni',

    2 => 'voluptatem accusantium doloremque',

    3 => 'dicta sunt explicabo',

    4 => 'laudantium, totam rem aperiam',

]);










========================数据操作===============================

数据表格默认有3个行操作编辑、查看和删除,可以通过下面的方式关闭它们:


 $grid->actions(function ($actions) {


    // 去掉删除

    $actions->disableDelete();


    // 去掉编辑

    $actions->disableEdit();


    // 去掉查看

    $actions->disableView();

});


// 全部关闭

$grid->disableActions();



可以通过传入的$actions参数来获取当前行的数据:


 $grid->actions(function ($actions) {


    // 当前行的数据数组

    $actions->row;


    // 获取当前行主键值

    $actions->getKey();

});



默认情况下有一个批量删除的操作,有下面的一些使用方法


$grid->batchActions(function ($batch) {

    $batch->disableDelete();

});


// 去掉批量操作

$grid->disableBatchActions();



选项卡:

https://laravel-admin.org/docs/zh/data-form#%E9%80%89%E9%A1%B9%E5%8D%A1%E8%A1%A8%E5%8D%95




==============================自定义行&批量操作======================================


https://laravel-admin.org/docs/zh/model-grid-custom-actions


行操作

https://laravel-admin.org/docs/zh/model-grid-custom-actions#%E8%A1%8C%E6%93%8D%E4%BD%9C



页面跳转

https://laravel-admin.org/docs/zh/model-grid-custom-actions#%E9%A1%B5%E9%9D%A2%E8%B7%B3%E8%BD%AC



批量操作

https://laravel-admin.org/docs/zh/model-grid-custom-actions#%E6%89%B9%E9%87%8F%E6%93%8D%E4%BD%9C




互动

https://laravel-admin.org/docs/zh/model-grid-custom-actions#%E4%BA%92%E5%8A%A8

点击操作的时候,经常会需要进行一些确认或者填写额外的数据,可以有下面两种方式来实现互动:



弹出对话框

https://laravel-admin.org/docs/zh/model-grid-custom-actions#%E5%BC%B9%E5%87%BA%E5%AF%B9%E8%AF%9D%E6%A1%86



弹出表单

https://laravel-admin.org/docs/zh/model-grid-custom-actions#%E5%BC%B9%E5%87%BA%E8%A1%A8%E5%8D%95



在handle方法中,我们要增加第二个参数来获取表单值:


use Illuminate\Http\Request;


public function handle(Model $model, Request $request)

{

    // 获取到表单中的`type`值

    $request->get('type');


    // 获取表单中的`reason`值

    $request->get('reason');


    // 你的举报逻辑...


    return $this->response()->success('举报已提交')->refresh();

}


目前表单支持的方法参考:

public function form()

{

    // 文本输入框

    $this->text('name', 'Placeholder...')->rules('required|min:10');


    // Email输入框

    $this->email('name', 'Placeholder...');


    // IP输入框

    $this->ip('name', 'Placeholder...');


    // URL输入框

    $this->url('name', 'Placeholder...');


    // 密码输入框

    $this->password('name', 'Placeholder...');


    // 手机号输入框

    $this->mobile('name', 'Placeholder...');


    // 文本域输入框

    $this->textarea('name', 'Placeholder...');


    // 单选框

    $this->select('name', 'Placeholder...')->options([]);


    // 多选框

    $this->multipleSelect('name', 'Placeholder...')->options([]);


    // Checkbox

    $this->checkbox('name', 'Placeholder...')->options([]);


    // Radio

    $this->radio('name', 'Placeholder...')->options([]);


    // 上传文件

    $this->file('name', 'Placeholder...');


    // 上传图片

    $this->image('name', 'Placeholder...');


    // 时间日期选择

    $this->datetime('name', 'Placeholder...');


    // 日期选择

    $this->date('name', 'Placeholder...');


    // 时间选择

    $this->time('name', 'Placeholder...');


    // 隐藏

    $this->hidden('name');

}





普通操作

https://laravel-admin.org/docs/zh/model-grid-custom-actions#%E6%99%AE%E9%80%9A%E6%93%8D%E4%BD%9C


假设你需要在表格头部加入一个导入数据按钮,点击之后弹出表单上传文件进行数据的导入,参考下面的步骤。


运行下面的命令创建一个普通操作类:


php artisan admin:action Post\\ImportPost --name="导入数据"

生成的类文件app/Admin/Actions/Post/ImportPost.php:


刚刚生成的代码是:


<?php


namespace App\Admin\Actions\Post;


use Encore\Admin\Actions\Action;

use Illuminate\Http\Request;


class ImportPost extends Action

{

    protected $selector = '.import-post';


    public function handle(Request $request)

    {

        // $request ...


        return $this->response()->success('Success message...')->refresh();

    }


    public function html()

    {

        return <<<HTML

        <a class="btn btn-sm btn-default import-post">导入数据</a>

HTML;

    }

}



修改这个类,提供上传文件的功能,并加上处理数据的逻辑:


<?php


namespace App\Admin\Actions\Post;


use Encore\Admin\Actions\Action;

use Illuminate\Http\Request;


class ImportPost extends Action

{

    public $name = '导入数据';


    protected $selector = '.import-post';


    public function handle(Request $request)

    {

        // 下面的代码获取到上传的文件,然后使用`maatwebsite/excel`等包来处理上传你的文件,保存到数据库

        $request->file('file');


        return $this->response()->success('导入完成!')->refresh();

    }


    public function form()

    {

        $this->file('file', '请选择文件');

    }


    public function html()

    {

        return <<<HTML

        <a class="btn btn-sm btn-default import-post"><i class="fa fa-upload"></i>导入数据</a>

HTML;

    }

}



返回数据

https://laravel-admin.org/docs/zh/model-grid-custom-actions#%E8%BF%94%E5%9B%9E%E6%95%B0%E6%8D%AE


下面是一个最简单的返回示例:


return $this->response()->success('Success!');

操作类处理完成之后,返回一个Success!的成功提示,下面是几个其它类型的返回:


// 处理错误

try {

    // 处理逻辑...


    return $this->response()->success('成功...');

} catch (Exception $e) {

    return $this->response()->error('产生错误:'.$e->getMessage());

}


// 返回提示信息

return $this->response()->info('提示信息...');


// 返回警告信息

return $this->response()->warning('警告信息...');

返回之后刷新页面:


return $this->response()->success('Success!')->refresh();

返回之后跳转到其它页面:


return $this->response()->success('Success!')->redirect('/admin/users');

返回之后下载文件:


return $this->response()->success('Success!')->download('http://www.xxx.com/file.zip');



右键菜单

https://laravel-admin.org/docs/zh/model-grid-custom-actions#%E5%8F%B3%E9%94%AE%E8%8F%9C%E5%8D%95


在指定页面开启:


use Encore\Admin\Grid\Displayers\ContextMenuActions;


$grid->setActionClass(ContextMenuActions::class);

或者在config/admin.php添加配置全局开启:


'grid_action_class' => \Encore\Admin\Grid\Displayers\ContextMenuActions::class,




切换操作列的形式

https://laravel-admin.org/docs/zh/model-grid-custom-actions#%E5%88%87%E6%8D%A2%E6%93%8D%E4%BD%9C%E5%88%97%E7%9A%84%E5%BD%A2%E5%BC%8F


SMS_VERIFICATION_CODE_ASYNCHRONOUS_FORBID


asynchronous


全局表格初始化

https://laravel-admin.org/docs/zh/model-grid-init


use Encore\Admin\Grid;


Grid::init(function (Grid $grid) {


    $grid->disableActions();


    $grid->disablePagination();


    $grid->disableCreateButton();


    $grid->disableFilter();


    $grid->disableRowSelector();


    $grid->disableColumnSelector();


    $grid->disableTools();


    $grid->disableExport();


    $grid->actions(function (Grid\Displayers\Actions $actions) {

        $actions->disableView();

        $actions->disableEdit();

        $actions->disableDelete();

    });

});



如果全局设置后,要在其中某一个表格中开启设置,比如开启显示操作列,在对应的实例上调用$grid->disableActions(false);就可以了




批量操作 自定义写接口 弹出窗口

https://laravel-admin.org/docs/zh/model-grid-custom-tools#%E6%89%B9%E9%87%8F%E6%93%8D%E4%BD%9C


如果要添加自定义的批量操作,可以参考下面的例子

下面是扩展一个对文章批量发布的功能:


先定义操作类app/Admin/Extensions/Tools/ReleasePost.php:



<?php


namespace App\Admin\Extensions\Tools;


use Encore\Admin\Grid\Tools\BatchAction;


class ReleasePost extends BatchAction

{

    protected $action;


    public function __construct($action = 1)

    {

        $this->action = $action;

    }


    public function script()

    {

        return <<<EOT


$('{$this->getElementClass()}').on('click', function() {


    $.ajax({

        method: 'post',

        url: '{$this->resource}/release',

        data: {

            _token:LA.token,

            ids: selectedRows(),

            action: {$this->action}

        },

        success: function () {

            $.pjax.reload('#pjax-container');

            toastr.success('操作成功');

        }

    });

});


EOT;


    }

}


看代码的实现,通过click操作发送一个post请求,把选中的行数据id通过数组的形式传给后端接口,

后端接口拿到id列表和要修改的状态来更新数据,然后前端刷新页面(pjax reload),并弹出toastr提示操作成功。


在model-grid中加入这个批量操作功能:


$grid->tools(function ($tools) {

    $tools->batch(function ($batch) {

        $batch->add('发布文章', new ReleasePost(1));

        $batch->add('文章下线', new ReleasePost(0));

    });

});



这样批量操作下拉按钮下面就会添加两个操作项,最后一步就是添加一个接口来处理批量操作的请求了,接口代码如下:


class PostController extends Controller

{

    ...


    public function release(Request $request)

    {

        foreach (Post::find($request->get('ids')) as $post) {

            $post->released = $request->get('action');

            $post->save();

        }

    }


    ...

}


然后添加路由指向上面的接口:


$router->post('posts/release', 'PostController@release');

这样整个流程就完成了。




数据来自外部API

https://laravel-admin.org/docs/zh/model-grid-data#%E6%95%B0%E6%8D%AE%E6%9D%A5%E8%87%AA%E5%A4%96%E9%83%A8api



==============列的显示==================

https://laravel-admin.org/docs/zh/model-grid-column-display



display回调

https://laravel-admin.org/docs/zh/model-grid-column-display#display%E5%9B%9E%E8%B0%83


display()方法来通过传入的回调函数来处理当前列的值:


$grid->column('title')->display(function ($title) {


    return "<span style='color:blue'>$title</span>";


});

在传入的匿名函数中可以通过任何方式对数据进行处理,另外匿名函数绑定了当前列的数据作为父对象,可以在函数中调用当前行的数据:



$grid->column('first_name');


$grid->column('last_name');


// 不存在的`full_name`字段

$grid->column('full_name')->display(function () {

    return $this->first_name . ' ' . $this->last_name;

});





根据条件显示不同的组件


https://laravel-admin.org/docs/zh/model-grid-column-display#%E6%A0%B9%E6%8D%AE%E6%9D%A1%E4%BB%B6%E6%98%BE%E7%A4%BA%E4%B8%8D%E5%90%8C%E7%9A%84%E7%BB%84%E4%BB%B6

如果这一列要根据某些条件来显示为不同的组件


$grid->column('title')->display(function ($title, $column) {


    // 如果这一列的status字段的值等于1,直接显示title字段

    if ($this->status == 1) {

        return $title;

    }


    // 否则显示为editable

    return $column->editable();

});




内容映射

如果字段gender的取值为f、m,分别需要用女、男来显示

$grid->column('gender')->using(['f' => '女', 'm' => '男']);





列视图

https://laravel-admin.org/docs/zh/model-grid-column-display#%E5%88%97%E8%A7%86%E5%9B%BE


使用view()方法让当前列渲染一个视图显示输出, 比如有一个视图resources/views/content.blade.php


<p>


{{ $value }}


{{ $model->id }}


</p>

默认会传入视图的两个变量,$model为当前行的模型,$value为当前列的值


然后用下面的调用来渲染这个视图输出


$grid->column('content')->view('content');

用这个方法可以很好的渲染出复杂的列内容。





列展开

https://laravel-admin.org/docs/zh/model-grid-column-display#%E5%88%97%E5%B1%95%E5%BC%80


如果一行的字段比较多,可以通过列展开功能,来隐藏过多的内容。通过点击列来展开显示,或者点击展开相关的其它数据,比如下面的例子,用来展开一条文章下的10条最新评论:


use Encore\Admin\Widgets\Table;


$grid->column('title', '标题')->expand(function ($model) {


    $comments = $model->comments()->take(10)->map(function ($comment) {

        return $comment->only(['id', 'content', 'created_at']);

    });


    return new Table(['ID', '内容', '发布时间'], $comments->toArray());

});



弹出模态框

https://laravel-admin.org/docs/zh/model-grid-column-display#%E5%BC%B9%E5%87%BA%E6%A8%A1%E6%80%81%E6%A1%86


和列展开功能类似,可以通过弹出模态框来显示更多内容


$grid->column('title', '标题')->modal('最新评论', function ($model) {


    $comments = $model->comments()->take(10)->get()->map(function ($comment) {

        return $comment->only(['id', 'content', 'created_at']);

    });


    return new Table(['ID', '内容', '发布时间'], $comments->toArray());

});





显示label标签

https://laravel-admin.org/docs/zh/model-grid-column-display#%E6%98%BE%E7%A4%BAlabel%E6%A0%87%E7%AD%BE


将字段显示为label标签, 如果字段输出为数组,会显示为多个label标签。


$grid->column('name')->label();


//设置颜色,默认`success`,可选`danger`、`warning`、`info`、`primary`、`default`、`success`

$grid->column('name')->label('danger');


// 接收数组

$grid->column('keywords')->label();

如果需要将status字段的不同的值显示为不同颜色的label


$grid->column('status')->label([

    1 => 'default',

    2 => 'warning',

    3 => 'success',

    4 => 'info',

]);



日期格式

https://laravel-admin.org/docs/zh/model-grid-column-display#%E6%97%A5%E6%9C%9F%E6%A0%BC%E5%BC%8F


如果字段值为时间戳,可以用date方法格式化输出

$grid->column('created_at')->date('Y-m-d');


将这一列转为bool值之后显示为✓和✗.


$grid->column('approved')->bool();

你也可以按照这一列的值指定显示,比如字段的值为Y和N表示true和false


$grid->column('approved')->bool(['Y' => true, 'N' => false]);






列操作

https://laravel-admin.org/docs/zh/model-grid-column-display#%E5%88%97%E6%93%8D%E4%BD%9C











==============表单组件==================

https://laravel-admin.org/docs/zh/model-form-fields


设置保存值

设置默认值

设置help信息

设置属性

设置placeholder

设置必填

设置pattern

设置readonly

设置disable

设置autofocus

model-form-tab

设置表单项组合

文本输入框

select选择框

select 联动

多选框

listbox

textarea输入框

radio选择

checkbox选择

email输入框

密码输入框

url输入框

IP输入框

电话号码输入框

颜色选择框

时间输入框

日期输入框

日期时间输入框

时间范围选择框

日期范围选框

时间日期范围选择框

货币输入框

数字输入框

比例输入框

图片上传

文件上传

多图/文件上传

地图控件

滑动选择控件

富文本编辑框

隐藏域

开关选择

显示字段

分割线

HTML

标签

图标

时区选择

table

一对多

内嵌

List

KeyValue



===================表单验证==========================


model-form使用Laravel的验证规则来验证表单提交的数据:


$form->text('title')->rules('required|min:3');


// 复杂的验证规则可以在回调里面实现

$form->text('title')->rules(function ($form) {

    // 如果不是编辑状态,则添加字段唯一验证

    if (!$id = $form->model()->id) {

        return 'unique:users,email_address';

    }

});

也可以给验证规则自定义错误提示消息:


$form->text('code')->rules('required|regex:/^\d+$/|min:10', [

    'regex' => 'code必须全部为数字',

    'min'   => 'code不能少于10个字符',

]);

如果要允许字段为空,首先要在数据库的表里面对该字段设置为NULL,然后


$form->text('title')->rules('nullable');




创建页面规则

只在创建表单提交时生效


$form->text('title')->creationRules('required|min:3');

更新页面规则

只在更新表单提交时生效


$form->text('title')->updateRules('required|min:3');

数据库unique检查

一个比较常见的场景是提交表单是检查数据是否已经存在,可以使用下面的方式:


$form->text('username')

    ->creationRules(['required', "unique:user_table"])

    ->updateRules(['required', "unique:user_table,username,{{id}}"]);






===================模型表单回调==========================

https://laravel-admin.org/docs/zh/model-form-callback


model-form目前提供了下面几个方法来接收回调函数:


// 在表单提交前调用

$form->submitted(function (Form $form) {

    //...

});


//保存前回调

$form->saving(function (Form $form) {

    //...

});


//保存后回调

$form->saved(function (Form $form) {

    //...

});

可以从回调参数$form中获取当前提交的表单数据:


$form->saving(function (Form $form) {


    dump($form->username);


});

获取获取模型中的数据


$form->saved(function (Form $form) {


    $form->model()->id;


});


可以直接在回调中返回Symfony\Component\HttpFoundation\Response的实例,来跳转或进入页面:


$form->saving(function (Form $form) {


    // 返回一个简单response

    return response('xxxx');


});


$form->saving(function (Form $form) {


    // 跳转页面

    return redirect('/admin/users');


});


$form->saving(function (Form $form) {


    // 抛出异常

    throw new \Exception('出错啦。。。');


});

返回错误或者成功信息在页面上:


use Illuminate\Support\MessageBag;


// 抛出错误信息

$form->saving(function ($form) {


    $error = new MessageBag([

        'title'   => 'title...',

        'message' => 'message....',

    ]);


    return back()->with(compact('error'));

});


// 抛出成功信息

$form->saving(function ($form) {


    $success = new MessageBag([

        'title'   => 'title...',

        'message' => 'message....',

    ]);


    return back()->with(compact('success'));

});

删除前后

since v1.6.13


在删除的前后增加了两个回调deleting和deleted。


可以直接抛出异常


$form->deleting(function () {

    ...

    throw new \Exception('产生错误!!');

});


$form->deleted(function () {

    ...

    throw new \Exception('hahaa');

});

直接返回一个json response,可以用来修改文案提示:



$form->deleting(function () {

    ...

    return response()->json([

        'status'  => false,

        'message' => '删除失败,请。。',

    ]);

});


$form->deleted(function () {

    ...

    return response()->json([

        'status'  => false,

        'message' => '删除失败,请。。',

    ]);

});



===================页面消息==========================



Notifications

在页面调用下面的方法,它将会调用toastr组件,在页面的右上角添加一条浮动的提示


admin_toastr('Message...', 'success');


admin_toastr('Message...', 'info');


admin_toastr('Message...', 'warning');


admin_toastr('Message...', 'error');

也可以接收第三个参数,给toastr添加设置参数,更多参数参考toastr


admin_toastr('Message...', 'success', ['timeOut' => 5000]);

Alerts

since v1.5.19


wx20180822-200500


在版本v1.5.19中调整并优化了在在页面添加Alert消息,



<?php


namespace App\Admin\Controllers;


use Encore\Admin\Layout\Content;

use App\Http\Controllers\Controller;


class PostController extends Controller

{

    public function index(Content $content)

    {

        return $content

            ->withError('Title', 'messages..');

    }

}

添加其它几种类型的消息


$content->withWarning('Title', 'messages..');


$content->withInfo('Title', 'messages..');


$content->withSuccess('Title', 'messages..');

也可以用下面的几个方法, 效果是一样的


admin_success($title, $message);


admin_warning($title, $message);


admin_error($title, $message);


admin_info($title, $message);







===================设置分页==========================


设置每页显示行数

$grid->paginate(15);



修改显示输出

$grid->column('text')->display(function($text) {

    return str_limit($text, 30, '...');

});


$grid->column('name')->display(function ($name) {

    return "<span class='label'>$name</span>";

});


$grid->column('email')->display(function ($email) {

    return "mailto:$email";

});


// 添加不存在的字段

$grid->column('column_not_in_table')->display(function () {

    return 'blablabla....';

});




display()方法接收的匿名函数绑定了当前行的数据对象,可以在里面调用当前行的其它字段数据


$grid->column('first_name');

$grid->column('last_name');


// 不存的字段列

$grid->column('full_name')->display(function () {

    return $this->first_name.' '.$this->last_name;

});


禁用创建按钮

$grid->disableCreateButton();

禁用分页条

$grid->disablePagination();

禁用查询过滤器

$grid->disableFilter();

禁用导出数据按钮

$grid->disableExport();

禁用行选择checkbox

$grid->disableRowSelector();

禁用行操作列

$grid->disableActions();

禁用行选择器

$grid->disableColumnSelector();

设置分页选择器选项

$grid->perPages([10, 20, 30, 40, 50]);





自定义工具

https://laravel-admin.org/docs/zh/model-form.md

$form->tools(function (Form\Tools $tools) {


    // 去掉`列表`按钮

    $tools->disableList();


    // 去掉`删除`按钮

    $tools->disableDelete();


    // 去掉`查看`按钮

    $tools->disableView();


    // 添加一个按钮, 参数可以是字符串, 或者实现了Renderable或Htmlable接口的对象实例

    $tools->add('<a class="btn btn-sm btn-danger"><i class="fa fa-trash"></i>&nbsp;&nbsp;delete</a>');

});




表单脚部


$form->footer(function ($footer) {


    // 去掉`重置`按钮

    $footer->disableReset();


    // 去掉`提交`按钮

    $footer->disableSubmit();


    // 去掉`查看`checkbox

    $footer->disableViewCheck();


    // 去掉`继续编辑`checkbox

    $footer->disableEditingCheck();


    // 去掉`继续创建`checkbox

    $footer->disableCreatingCheck();


});




去掉提交按钮:

$form->disableSubmit();



去掉重置按钮:

$form->disableReset();



https://laravel-admin.org/docs/zh/model-form.md

忽略掉不需要保存的字段

$form->ignore(['column1', 'column2', 'column3']);





设置宽度

$form->setWidth(10, 2);


=================设置保存的路由 设置表单提交的action========================

$form->setAction('admin/users');

判断当前表单页是创建页面还是更新页面


=================得到现在的操作是什么==================


$form->isCreating();


$form->isUpdating();


$form->isCreating();


$form->isUpdating();


$form->isEditing()


===================关联模型==========================

关联模型

一对一

users表和profiles表通过profiles.user_id字段生成一对一关联



CREATE TABLE `users` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',

`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


CREATE TABLE `profiles` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`user_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`age` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`gender` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',

`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

对应的数据模分别为:



class User extends Model

{

    public function profile()

    {

        return $this->hasOne(Profile::class);

    }

}


class Profile extends Model

{

    public function user()

    {

        return $this->belongsTo(User::class);

    }

}

通过下面的代码可以关联在一个form里面:



$form = new Form(new User);


$form->display('id');


$form->text('name');

$form->text('email');


$form->text('profile.age');

$form->text('profile.gender');


$form->datetime('created_at');

$form->datetime('updated_at');