#### 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` 實例, 如