Laravel-Admin 開發筆記

王舉發表於2017-08-01

最近在公司開發後臺管理系統,然後本著簡單快速的原則,選擇Laravel-Admin

初期的安裝就不說了,基本安裝GitHub的安裝文件來就行啦

1.自定義問題

但是Laravel-admin已經在後臺模板中進行了高度的定義
如果想要自定義介面的話,還是比較複雜,比如要開發一個小說閱讀介面。
文件的自定義元件看過了,個人感覺還是比較複雜的,不太實用。

所以想到一個思路,就是通過laravel的渲染檢視拿到裡面的html,在通過laravel-admin的row方法渲染過去。
經過谷歌,發現view有一個render方法,可以之間渲染html
具體程式碼大概這樣


return Admin::content(function (Content $content) use ($book_id) {

            $book = Book::find($book_id);
            $chapters = $book->chapters();
            $articleView = view('admin.reader',compact('chapters'))
                ->render();
            $content->row($articleView);
});

然後,就可以將定義的內容完全抽離到view層,當然,也可以隨便定義啦

file

2.閉包中的$this

在顯示列表的時候,laravel-admin一般使用$gird來進行定義顯示的行

$grid->comment_time('評論時間')->display(function ($time){

        dd($this);

        return date('Y-m-d',$time);
  });

在閉包中,這個$this可以拿到當前行的物件所有欄位,然後就可以自定義它,做各種花式跳轉了,比如帖子列表,我進去之後可以管理該帖子下的所有評論,直接將帖子id傳進去過濾就好啦

3.監控欄位的更新

後臺很多欄位的更新往往和業務邏輯有關,當然涉及到重寫的問題,在laravel-admin中,都放在ModelForm這個Trait裡面,具體程式碼

<?php

namespace Encore\Admin\Controllers;

trait ModelForm
{
    public function show($id)
    {
        return $this->edit($id);
    }

    public function update($id)
    {
        return $this->form()->update($id);
    }

    public function destroy($id)
    {
        if ($this->form()->destroy($id)) {
            return response()->json([
                'status'  => true,
                'message' => trans('admin::lang.delete_succeeded'),
            ]);
        } else {
            return response()->json([
                'status'  => false,
                'message' => trans('admin::lang.delete_failed'),
            ]);
        }
    }

    public function store()
    {
        return $this->form()->store();
    }
}

我們要做的,當然是重寫它了,比如我在書籍狀態改變的時候要推送給使用者
重寫update

public function update($id) {
        $book = Book::find($id);
                // 給書的作者推送邏輯

        $result = $this->form()->update($id);
                // 介面的跳轉邏輯
        return $result;
 }

當然,這裡有一個方法

admin_toastr('laravel-admin 提示','success');

laravel-admin提示,如果你用laravel-admin,你一定會用到?

相關文章