Voyager 升至 1.2 踩坑紀錄

建立於 3/17/2023 • 更新於 3/17/2023

公司舊專案因資安問題需要做升級,有個專案使用 Voyager 1.1 版本,我需要一路往上升上去,照著官方文件的步驟升級結果才升到 1.2,系統就各種噴錯,都是文件根本沒有提到的升版注意事項,本來我懶惰想直接丟這些錯誤訊息給谷歌大神,結果幾乎沒有相關說明,無奈之下本宮只好翻底層程式碼一個一個抓問題了,以下稍微紀錄一下要調整的部分:

1. 改用 voyager 提供介面替代

已不支援 TCG\Voyager\Voyager::can(), TCG\Voyager\Voyager::canOrAbort(), TCG\Voyager\Voyager::canOrFail() 相關語法,改用 Auth::user()->hasPermission()

Image

2. 原方法已被改寫,不使用

Image

3. 自行複製 voyager 同檔名檔案

Image

4. Media Page 內容無法顯示

在以下各檔案做調整:

// config/filesystems.php 

return [
    'disks' => [
        'voyager' => [
            'driver' => 'local',
            'root' => public_path('storage'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],
    ],
];

// config/voyager.php
return [
    // ...
    'storage' => [
        'disk' => 'voyager',
    ],
    'media' => [
        // ...
        'path'                => '',
    ],
];

// resources/views/vendor/voyager/master.blade.php
<meta name="assets-path" content="{{ route('voyager.voyager_assets') }}"/>
// ...
@include('voyager::media.manager')
Image

5. 套件已自行處理 json_decode

Image

6. 側邊攔錯誤訊息

resources/views/vendor/voyager/dashboard/sidebar.blade.php 原寫法

{!! menu('admin', 'admin_menu') !!}

改為

<div id="adminmenu">
    <admin-menu :items="{{ menu('admin', '_json') }}"></admin-menu>
</div>
Image

7. 已移除 $searchable

$searchable 改為 $searchNames

Image

8. sortByUrl() 參數必填

{{ $row->sortByUrl() }} 改為 {{ $row->sortByUrl($row->field, 'asc') }}

Image

9. isCurrentSortField() 參數必填

$row->isCurrentSortField() 改為 $row->isCurrentSortField('')

Image
My Avatar

Chris Wang

Keep Learning, and Keep Coding.

草木園丁兼全端工程師 • 期許自己每天多懂一點新知識 • 莫欺少年窮