#### 1.3.8
1. 废弃了 updateFields, addFields 中使用 nofetch 参数来使某字段的表单不渲染的功能
2. indexFields 中当字段对应的值为 `@hidden` 时该字段不展示在表格中
#### 1.3.7
1. 视图模型中 updateFields, addFields, indexFields, search 属性中, 允许使用模板来代替组件名, 这样可以直接渲染一个模板作为当前的字段的 Form 组件, 模板中允许使用和组件相同的变量
2. 修复 SearchComponent 中 search 方法不生效的 bug
#### 1.3.6
1. 修复了Input表单组件继承错误的问题
2. 现在支持在视图模型中使用 `fetchForm` 方法接管表单构建流程, 具体请参考 application\\common\\ViewModel.php 中的 fetchForm 方法注释
#### 1.3.5
支持通过插件拓展原有功能, 新增一个插件相关的命令行工具(application\\plugins\\plugin-cli.php), 查看 **[插件说明](application/plugins/readme.md)**
#### 1.3.3
1. 涉及权限的操作后, 会自动刷新当前登录用户的权限, 不再需要重新登陆
2. 优化控制器 update 方法, add 方法, 使用自定义的 更新 或 添加流程时 更加方便
3. ViewModel update 方法和 add 方法传入的第二个参数(匿名函数)得到的参数为 当前视图模型实例, update 方法中的查询条件变更为第三个参数
自定义更新和添加方法(Controller中)
~~~
class Product extends Controller
{
public $model = 'Product';
// 更新数据
public function update($todo = null)
{
/**
* @var $params array 表单获取的内容
* @var $vm ViewModel 当前操作的视图模型实例
* @var $where array update 查询条件
*/
return parent::update(function (array $params, ViewModel $vm, array $where) {
// todo: 自定义更新数据的流程
});
}
// 新增数据
public function add($todo = null)
{
/**
* @var $params array 表单获取的内容
* @var $vm ViewModel 当前操作的视图模型实例
*/
return parent::add(function (array $params, ViewModel $vm) {
// todo: 自定义添加数据的流程
});
}
}
~~~
#### 1.3.1
1. 新增一个 `TableConvert` 表格组件, 用于转换数据
2. 视图模型的 `IndexFields` 属性中, 现在支持使用 `not_field` 参数, 将其不视为一个字段去获取
3. 引入 `phpseclib` 库
4. JWT token 可以配置使用 RSA 加密, 加密后允许在客户端存用户的隐私信息
5. 可以通过 `api\secure\resetRsaKey` 接口重置 RSA 密钥
#### 1.3.0
1. 删除部分测试代码
2. 新增一个地区选择表单组件 `FormArea` 用于选择城市地区
#### 1.2.9
**安全更新**: 修复在没有开启强制路由的情况下可能的 getshell 漏洞
#### 1.2.8
1. Index 视图允许通过 配置 ViewModel 中的 tree 属性来生成树状的结构
~~~
class Menu extends ViewModel
{
...
// parent 是记录父级标识的字段, self 是自身的标识
public $tree = [
'parent' => 'pid',
'self' => 'id'
];
...
~~~
#### 1.2.6
1. ViewModel 中允许通过 fetchButtons 方法注入按钮.
2. VIewModel 中的 buttons 属性添加了一个参数 params 用于携带跟多自定义参数
**fetchButtons 示例 :**
~~~
...
/**
* 注入按钮, 在原有按钮的基础上 新增一个 测试按钮
* @param $row array 表格当前行的数据
* @return array 返回一个 buttons 数组, 规则同 buttons 属性
*/
public function fetchButtons ($row)
{
return array_merge($this->buttons, [[
'url' => 'test',
'params' => [
'arg1' => 1
],
'type' => 'danger',
'name' => '测试按钮'
]]);
}
...
~~~
#### 1.2.1
集成了 jwt 相关功能, api 控制器 `app\ApiController` 中加入了自动解析客户端传来的 `token`, 客户端在调用接口时需要在 header 中携带 `token` 放到 `Authorization` 中, 所有继承 `app\ApiController` 的控制器可以通过访问自身的 `token` 属性来获取 `\Lcobucci\JWT\Token` 实例, 如