tpextbuilder- HasBuilder(封裝頁面)

ichynul發表於2021-08-29
  • HasBuilder封裝了增、刪、查、改等所有動作

  • 也可按需分別引入tpext\builder\traits\actions\名稱空間下的相應動作。

use tpext\builder\traits\HasBuilder;
use tpext\builder\traits\actions;

class Admin extends Controller
{
    //方式1.完整引入,引入全部[增刪查改]等動作。
    //use HasBuilder;

    //方式2.按需引入
    //基礎
    use actions\HasBase;
    //按需載入,避免暴露不必要的action
    //列表
    use actions\HasIndex;
    //新增/修改
    use actions\HasAdd;
    use actions\HasEdit;
    //檢視
    use actions\HasView;
    //欄位編輯
    use actions\HasAutopost;
    //禁用/啟用
    use actions\HasEnable;
    //刪除
    use actions\HasDelete;
     /**
     * 資料篩選條件,配合buildSearch實用,若不需要搜尋,這兩個方法不用重寫
     *
     * @return void
     */
    protected function filterWhere()
    {
        $searchData = request()->post();

        $where = [];
        //構建搜尋條件
        if (!empty($searchData['username'])) {
            $where[] = ['username', 'like', '%' . $searchData['username'] . '%'];
        }
        return $where;
    }

     /**
     * 構建搜尋
     *
     * @return void
     */
    protected function buildSearch()
    {
        $search = $this->search;
        $search->text('username', '賬號', 3)->maxlength(20);
        //構建搜尋表單
    }

    /**
     * Undocumented function
     *
     * @param array $data
     * @return void
     */
    protected function buildTable(&$data = [])
    {
        $table = $this->table;

        $table->show('id', 'ID');
        $table->show('username', '登入帳號');
        //構建表格
        //略

        $table->getToolbar()
           ->btnAdd()
           ->btnDelete();

         $table->getActionbar()
           ->btnEdit()
           ->btnDelete();
     }

    /**
     * 構建表單
     *
     * @param boolean $isEdit
     * @param array $data
     */
    protected function buildForm($isEdit, &$data = [])
    {
        $form = $this->form;
        $form->text('username', '登入帳號')->required()->beforSymbol('<i class="mdi mdi-account-key"></i>');
        //構建表單
        //略
    }

   /**
     * 儲存資料
     *
     * @param integer $id
     * @return void
     */
    private function save($id = 0)
    {
        $data = request()->only([
          'username',
        ], 'post');

        // 資料驗證等,略
        if ($id) {
            $data['update_time'] = date('Y-m-d H:i:s');
            $res = $this->dataModel->where(['id' => $id])->update($data);
        } else {
            $res = $this->dataModel->create($data);
        }
    }
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章