Laravel Nova日历工具报错:需声明抽象类或实现menu方法
解决Laravel Nova集成日历工具的抽象方法报错问题
错误原因
你当前使用的Laravel Nova版本(推测为4.x及以上)中,Laravel\Nova\Tool抽象类新增了menu()抽象方法,而你安装的nova-calendar-tool工具类仅实现了旧版Nova的renderNavigation()方法,未实现这个必填的抽象方法,导致报错。
解决方案
方案1:修改工具类代码(快速修复)
找到项目中vendor/czemu/nova-calendar-tool/src/NovaCalendarTool.php文件,替换为以下代码:
<?php namespace Czemu\NovaCalendarTool; use Laravel\Nova\Nova; use Laravel\Nova\Tool; use Laravel\Nova\Menu\MenuSection; class NovaCalendarTool extends Tool { /** * Perform any tasks that need to happen when the tool is booted. * * @return void */ public function boot() { Nova::script('nova-calendar-tool', __DIR__.'/../dist/js/tool.js'); Nova::style('nova-calendar-tool', __DIR__.'/../dist/css/tool.css'); } /** * Get the menu that should represent the tool. * * @return \Laravel\Nova\Menu\MenuSection */ public function menu() { return MenuSection::make('Calendar') ->path('/nova-calendar-tool') ->icon('calendar'); } }
说明:
- 移除旧版的
renderNavigation()方法,新增适配新版Nova的menu()方法 - 引入
MenuSection类定义导航菜单的名称、路径和图标
方案2:安装兼容版本的工具
如果不想修改第三方包源码,可查看该工具的版本列表,安装适配你当前Nova版本的分支或版本号,示例命令如下:
composer require czemu/nova-calendar-tool:^适配版本号
后续验证
修改完成后,执行以下命令清除缓存:
php artisan cache:clear php artisan view:clear
刷新Nova后台页面,即可看到日历工具的导航入口,点击即可正常显示日历。
内容的提问来源于stack exchange,提问作者Destiny DJSD Samkange
相关产品推荐
相关产品推荐

