在安装之前,Laravel Nova 有些要求,需要你注意一下:
Nova 支持以下浏览器的现代版本:
Zip 下载
以前发布的 Laravel Nova 版本支持下载源码 zip 压缩包来安装; 但是, Nova 4 开始只能通过 Composer 安装。
你可以通过我们的私人 Satis 存储库将 Nova 安装为 Composer 软件包. 请将 Nova 存储库添加到应用程序的 composer.json 文件里面:
"repositories": [
{
"type": "composer",
"url": "https://nova.laravel.com"
}
],或者,您可以使用以下 CLI 命令将 Composer 存储库添加到 composer.json 文件里面:
composer config repositories.nova '{"type": "composer", "url": "https://nova.laravel.com"}' --file composer.json接下来,你可以添加 laravel/nova 作为必须的包到 composer.json 文件里面:
"require": {
"php": "^8.1",
"laravel/framework": "^10.0",
"laravel/nova": "^4.0"
},修改 composer.json 文件以后, 在控制台终端运行命令行 composer update :
composer update --prefer-dist运行 composer update 以后, 系统将提示您提供用户名和密码。你应该使用 Nova 网站上注册的电子邮件作为「用户名」和一个 授权码 作为「密码」。这些凭据将验证你的 Composer 会话是否具有下载 Nova 源代码的权限。
为了避免手动键入这些凭据,您可以创建 Composer auth.json 文件 然后使用 授权码 代替您的密码:
composer config http-basic.nova.laravel.com [email protected] your-license-key最后,运行 nova:install 和 migrate Artisan 命令. nova:install 命令将在你的应用中安装 Nova 的服务提供者,并发布资源文件:
php artisan nova:install
php artisan migrate运行完以上命令后,请确认 App\Providers\NovaServiceProvider 被添加到了 providers 数组内 在你的 config/app.php 配置文件里。如果没有,请手动添加。 当然,如果你的应用不使用 App 命名空间,你应该按需更新该服务提供者的类名。
默认的 App\Nova\User 资源引用了 App\Models\User 模型。如果你的模型放在别的目录或命名空间,请在资源中调整此值:
public static $model = 'App\\Models\\User';如果你的 users 表中还没有 Nova 管理员用户,你可以通过运行 nova:user Artisan 命令并按照提示添加一个管理员:
php artisan nova:user好的!接下来,你可以在浏览器中访问应用的 /nova 路径,然后你会看到 Nova 管理面板,其中包含指向本文档各部分的链接。
Nova 需要在生产环境中使用许可证密钥和域名 URL。Nova 将根据您 Nova 帐户中的许可证详细信息中的值检查您的许可证密钥和当前域名。
您可以在 Nova 帐户的许可证页面中生成许可证密钥并注册项目的域名 URL,网址为 https://nova.laravel.com/licenses:

通配符子域名
您可以为域名 URL 注册通配符子域,以便在多租户场景中使用 (例如 *.laravel.com)。
你可以通过在 config/nova.php 配置文件中设置 license_key 选项来注册许可证密钥:
'license_key' => env('NOVA_LICENSE_KEY', ''),要验证所有配置是否正确,应运行 nova:check-license 命令:
php artisan nova:check-license不建议将 Composer auth.json 文件存储在项目的源代码管理存储库中。但是,有时你可能希望在像CodeShip 这样的 CI 环境中下载 Nova。例如,您可能希望为您创建的任何自定义工具运行测试。
要在这些情况下验证 Nova,你可以使用 Composer 的 config 命令在 CI 系统的管道中设置配置选项,注入包含 Nova 用户名和许可证密钥的环境变量:
composer config http-basic.nova.laravel.com "${NOVA_USERNAME}" "${NOVA_LICENSE_KEY}"由于 Nova 可以在本地和测试开发环境中使用,因此 Nova 在 localhost 或像IETF RFC 2606中指定的本地 TLD(域名后缀) 上使用时不会检查您的许可证密钥:
.test.example.invalid.localhost.local当子域名是这些常用的测试子域之一时,Nova 也不会检查当前的许可证密钥:
staging.stage.test.testing.dev.development.在你的 app/Providers/NovaServiceProvider.php 文件中,有一个 gate 方法。此授权 gate 控制了 非本地 环境对 Nova 的访问。默认当应用环境是 local 时,任何人都可以访问 Nova 面板。你可以按需自由修改此 gate 方法,以限制对 Nova 的访问:
/**
* 注册 Nova gate.
*
* 此 gate 决定了谁可以在非本地环境访问 Nova.
*
* @return void
*/
protected function gate()
{
Gate::define('viewNova', function ($user) {
return in_array($user->email, [
'[email protected]',
]);
});
}尽管 Nova 的界面是由 Nova 管理的应用程序的一个独立部分,但你可以对 Nova 使用的品牌徽标和颜色进行一些小的自定义,以使界面与应用程序的其他部分更有凝聚力。

要自定义 Nova 界面左上角使用的徽标,您可以在应用程序的 config/nova.php 配置文件中为 brand.logo 配置项指定配置值。此配置值应包含要使用的徽标的 SVG 文件的绝对路径:
'brand' => [
'logo' => resource_path('/img/example-logo.svg'),
// ...
],SVG 大小
你可能需要通过修改 SVG 文件本身的宽度来调整 SVG 徽标的大小和宽度。
要自定义 Nova 界面中用作「主」颜色的颜色,你可以在应用程序的 config/nova.php 配置文件中为brand.colors 配置项指定一个值。该颜色将用作主按钮颜色,以及整个 Nova 界面中各种强调项目的颜色。此配置值应为有效的 RGB,RGBA 或 HSL 字符串值:
'brand' => [
// ...
'colors' => [
"400" => "24, 182, 155, 0.5",
"500" => "24, 182, 155",
"600" => "24, 182, 155, 0.75",
]
],有时,你可能希望自定义 Nova 的默认页脚文本,以包含用户的相关信息,如你的应用程序版本、IP地址或其他信息。使用 Nova::footer 方法,你可以自定义 Nova 的页脚文本。通常,footer 方法应在应用程序的App\Providers\NovaServiceProvider 类的 boot 方法中调用:
use Laravel\Nova\Nova;
use Illuminate\Support\Facades\Blade;
/**
* 启动任何应用程序服务.
*
* @return void
*/
public function boot()
{
parent::boot();
Nova::footer(function ($request) {
return Blade::render('
@env(\'prod\')
This is production!
@endenv
');
});
}Nova 使用 auth 配置文件中定义的默认身份验证看守器。如果你想自定义此看守器,可以在 Nova 的配置文件中设置 guard 值:
'guard' => env('NOVA_GUARD', null),Nova 使用 auth 配置文件中定义的默认密码重置代理。如果你想自定义这个代理,你可以在 Nova 的配置文件中设置 passwords 值:
'passwords' => env('NOVA_PASSWORDS', null),Nova 使用 filesystems 配置文件中定义的默认文件存储驱动磁盘。如果你想自定义此磁盘,可以在 Nova 的配置文件中设置 storage_disk 值:
'storage_disk' => env('NOVA_STORAGE_DISK', 'public'),访问 Nova 时,通常默认加载 Main 面板。但是,你可以自定义一个不同的初始路径,该路径应使用 Nova 的initialPath 方法加载。通常,此方法可以从 App\Providers\NovaServiceProvider 服务提供商的 register 方法调用:
use Laravel\Nova\Nova;
/**
* 注册任何应用程序服务.
*
* @return void
*/
public function register()
{
Nova::initialPath('/resources/users');
// ...
}除了字符串路径之外,initialPath 方法还接受一个闭包,该闭包返回应加载的路径。这允许你根据传入请求动态确定初始路径:
use Laravel\Nova\Nova;
/**
* 注册任何应用程序服务.
*
* @return void
*/
public function register()
{
Nova::initialPath(function ($request) {
return $request->user()->initialPath();
});
// ...
}如果你希望 Nova 在导航 Nova 仪表板时显示 "面包屑" 菜单,你可以调用 Nova::withBreadcrumbs 方法。此方法应在应用程序的 App\Providers\NovaServiceProvider 类的 boot 方法中调用:
use Laravel\Nova\Nova;
/**
* 启动任何应用程序服务.
*
* @return void
*/
public function boot()
{
parent::boot();
Nova::withBreadcrumbs();
}withBreadcrumbs 方法还接受一个闭包,该闭包允许你为特定用户或其他自定义场景启用面包屑:
use Laravel\Nova\Http\Requests\NovaRequest;
use Laravel\Nova\Nova;
Nova::withBreadcrumbs(function (NovaRequest $request) {
return $request->user()->wantsBreadcrumbs();
});如果你希望 "从右到左"(RTL)显示 Nova 的内容,你可以通过从 App\Providers\NovaServiceProvider 服务提供商调用 enableRTL 方法来启用此功能:
use Laravel\Nova\Nova;
/**
* 启动任何应用程序服务.
*
* @return void
*/
public function boot()
{
parent::boot();
Nova::enableRTL();
}enableRTL 方法还接受一个闭包,该闭包允许你为特定用户或在其他自定义场景中启用 RTL 支持:
use Illuminate\Http\Request;
use Laravel\Nova\Nova;
Nova::enableRTL(fn (Request $request) => $request->user()->wantsRTL());如果你希望完全隐藏 Nova 的明亮/暗黑模式切换器,而让 Nova 只遵守系统偏好,您可以从 App/Providers/NovaServiceProvider 中调用 withoutThemeSwitcher 方法:
use Laravel\Nova\Nova;
/**
* 启动任何应用程序服务.
*
* @return void
*/
public function boot()
{
parent::boot();
Nova::withoutThemeSwitcher();
}Nova 使用自己的内部异常处理程序,而不是使用默认的 App\Exceptions\ExceptionHandler。如果你需要将第三方错误报告工具与 Nova 安装集成,则应使用 Nova::report 方法。通常,应该从应用程序的 App\Providers\NovaServiceProvider 类的 register 方法调用此方法:
use Laravel\Nova\Nova;
Nova::report(function ($exception) {
if (app()->bound('sentry')) {
app('sentry')->captureException($exception);
}
});要更新已安装的 Nova 版本,需要运行命令 composer update :
composer update在更新到新的 Nova 版本后,你应该确保使用 Nova:publish Artisan 命令更新 Nova 的 JavaScript 和 CSS 资源,并使用 view:clear Artisan 命令清除缓存。这将确保最新更新的 Nova 版本使用 Nova 资源和视图的最新版本:
php artisan nova:publish
php artisan view:clearnova:publish 命令将重新发布 Nova 的公共资源、配置、视图和语言文件。此命令不会覆盖任何现有的配置、视图或语言文件。如果希望该命令覆盖现有文件,可以在执行该命令时使用 --force 标志:
php artisan nova:publish --force为了确保 Nova 的资源在下载新版本时得到更新,您可以在项目的 composer.json 文件中添加一个Composer 钩子,以自动发布 Nova 的最新资源:
"scripts": {
"post-update-cmd": [
"@php artisan nova:publish"
]
}Nova 的许可证不允许公开发布其源代码。因此,你不能在使用 Nova 构建应用程序以后,通过开源存储库托管平台或任何其他代码分发平台公开该应用程序。
如果你想开发一个增强 Nova 功能的第三方软件包,你可以自由开发。但是,你不能将 Nova 源代码与你的软件包一起分发。