注:若无特别说明,无参数代表参数列表为空,列出有多少个参数就是多少个参数(一般都为一个);返回值指的是插件所指定方法/函数的返回值。使用${}包括的部分为可变量,一般会给说明。
[TOC]
# 前台
# 后台
## settings
参数:无
返回值类型:array
说明:
该钩子定义设置标题以及设置表单。格式如下:
```php
[
'title'=>'测试插件设置', // 标题
'form'=>[ // 表单项
'test'=>['label'=>'测试项','type'=>'text','require'=>true]
]
]
```
标题说明:为了配合国际化,您可以在标题部分自行定义使用语言文件(参见Laravel[扩展包开发](https://learnku.com/docs/laravel/6.x/packages/5167#translations)文档)。
表单项说明:键名为储存到options表的key,为了不与其他插件或系统设置冲突,系统会自动将键名前面加上插件别名,例如`demo_test`;label为显示到界面上的标签;type为表单类型,理论上支持Laravel-admin的所有表单类型;其他的设置与Laravel-admin的表单组件有关,所有支持的方法都可以使用,如果不需要填入参数可以设置键值为空数组,如果需要多个参数,键值为无键名数组,顺序为参数的顺序。
## client_menu
参数:无
返回值类型:array
说明:该钩子增加客户区的菜单项,即通过返回值设置菜单项。格式如下:
~~~
return [
'关于NewIDC' => ['type' => 'url', 'url' => 'https://github.com/moqiaoduo'], // 固定url
'测试页面' => ['type' => 'plugin_page', 'page' => 'test'], // 插件页面
];
~~~
该钩子可以指定插件页面或固定url。
## plugin_page
参数:无
返回值类型:array
说明:自定义插件页面,示例:
```
return [
'migrate'=>function(){
return view('test::index')
}
];
```
通过上一个钩子的导航,可以访问到该插件的migrate页面,访问页面时调用了匿名函数。其原理是,通过调用该钩子注册相应的GET路由,并将对应键值作为action。
## plugin_action
参数:Request对象
返回值类型:array
说明:定义action的数组格式:
```
return [
'migrate' => function($request) {
// todo
},
'save' => [$this,'save'],
];
```
也就是说,键名为action名称,键值则为action所做操作。原理基本同上,但注册的是POST路由。
上面的插件页面并不建议进行数据的存储操作,所以建议注册该钩子实现。普通的表单post和ajax均支持,需不需要返回值自行决定。URL的格式:http://localhost/plugin/{plugin}/{action} ,Method:Post。也可以通过 **route('${plugin}_${action}')** 这样的方式获取URL。其中**${plugin}**代表插件别名,**${action}**则代表上面的action。
注意:Laravel需要在post时传入一个_token,可通过 **csrf_token()** 来获取,也可以通过 **csrf_field()** 获取隐藏input,否则提交后会提示419错误。
