Ajouter Nova & helpers
Nova
Ajouter le repo privé et ses credentials
composer config repositories.nova '{"type": "composer", "url": "https://nova.laravel.com"}' --file composer.json
Puis entrer ses credentials pour ne pas avoir à les entrer à chaque fois (adresse mail et clé d'api), cette commande va ajouter auth.json à la racine avec les credentials (ne pas versionner ce fichier).
composer config http-basic.nova.laravel.com example@mail.com REMPLACER_PAR_NOVA_KEY
Ensuite, installer Nova
composer update --prefer-dist
php artisan nova:install
php artisan migrate
Certaines configuration de database peuvent sortir une erreur SQLSTATE[42000]: Syntax error or access violation: 1071 La clé est trop longue. Dans ce cas, ajouter dans app/Service/AppServiceProvider.php la ligne suivante dans la fonction boot :
public function boot(): void {
Schema::defaultStringLength(191);
}
Assurez-vous d'avoir les bonnes infos de connexion à la base de données dans le fichier .env avant le migrate
Ajouter le premier utilisateur
Il faut maintenant ajouter un utilisateur pour pouvoir se connecter au dashboard nova (http://mon-url.com/nova) :
php artisan nova:user
Puis suivre les instructions (choix d'un nom, d'un email et d'un mot de passe pour créer l'utilisateur).
Important, ajouter les emails autorisés
Lorsque l'on n'est plus en environnement local, Nova vérifie les adresses mail autorisées, en plus des Nova Users créés. Pour cela, il faut ajouter les emails autorisés dans app/Providers/NovaServiceProvider.php, dans la fonction gate() :
protected function gate(){
Gate::define('viewNova', function ($user) {
$authorized_emails_str = ENV('NOVA_AUTHORIZED_EMAILS', 'mon-email@gmail.com, deuxieme-email@gmail.com');
$authorized_emails = explode(',', $authorized_emails_str);
$authorized_emails = array_map('trim', $authorized_emails);
return in_array($user->email, $authorized_emails);
});
}
et en ajoutant dans le .env :
NOVA_AUTHORIZED_EMAILS='mon-email@gmail.com, deuxieme-email@gmail.com'
Ajouter le custom CSS
Créer le fichier css dans /public
/* Multiselect - BelongsToMany plugin (add borders) */
.multiselect{
border-color: rgba(var(--colors-gray-300));
border-width: 1px;
border-radius: 4px;
}
/* --------- CKEditor content ------------ */
.ck.ck-content h1{
font-weight: 700;
font-size: 48px;
line-height: 1.2;
}
.ck.ck-content h2{
font-weight: 700;
font-size: 32px;
line-height: 1.3;
}
.ck.ck-content h3{
font-weight: 700;
font-size: 21px;
line-height: 1.5;
}
.ck.ck-content h4{
font-weight: 700;
font-size: 14px;
}
body .ck.ck-reset.ck-editor .ck-editor__editable_inline *{
font-family: Nunito Sans, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
color: #222;
}
body .ck.ck-reset.ck-editor .ck-editor__editable_inline blockquote, body .ck.ck-reset.ck-editor .ck-editor__editable_inline li, body .ck.ck-reset.ck-editor .ck-editor__editable_inline ol, body .ck.ck-reset.ck-editor .ck-editor__editable_inline p, body .ck.ck-reset.ck-editor .ck-editor__editable_inline ul{
font-size: 14px !important;
}
Cherger le css au boot de Nova
public function boot() {
parent::boot();
// Add custom CSS
Nova::style('nova_overrides', public_path('nova_overrides.css'));
}
Pour plus de détails sur Laravel nova, retrouvez la documentation officielle ici : https://nova.laravel.com/docs/4.0/installation.html
Nova helpers
Tout les packages concernant Nova.
Gestion de media avec :
composer require ebess/advanced-nova-media-library
Gestion de field multi relationnel
composer require benjacho/belongs-to-many-field
Utilisation commune
Exemple :
use Benjacho\BelongsToManyField\BelongsToManyField;
...
class MaResource extends Resource {
...
public function fields(NovaRequest $request) {
...
BelongsToManyField::make('Role Label', 'roles', 'App\Nova\Role')->optionsLabel('full_role_name'),
...
}
...
}
Ajouter d'autres langues pour Nova
composer require coderello/laravel-nova-lang
Puis
php artisan nova-lang:publish fr
m-a-k-o/youtube-field
Améliore la gestion vidéo :
composer require m-a-k-o/youtube-field
Utilisation commune
Exemple :
use MAKO\YoutubeField\YoutubeField;
...
class MaResource extends Resource {
...
public function fields(NovaRequest $request) {
...
YoutubeField::make('Vidéo url', 'video_url')->hideFromIndex(),
...
}
...
}
CKEditor
CKEditor est un editeur de texte dans Nova, son installation requiert un peu plus de travail, se rendre sur "Ajouter Nova CKEditor"