Laravel 10 – 13
PHP 8.2+
Low commit activity in last 18 months
A long-lived project that still receives updates
A Laravel Nova package to manage pages.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies
 Project Readme

Laravel Nova Page Manager

This package allows you to manage pages with custom templates.

Requirements

  • PHP >= 8.2
  • Laravel >= 10.0
  • Laravel Nova >= 4.0

NOTE: These instructions are for Laravel >= 10.0 and PHP >= 8.2 If you are using prior version, please see the previous version's docs.

Installation

composer require novius/laravel-nova-page-manager

NOTE: These instructions are for Laravel Nova >= 4.0. If you are using prior version, please see the previous version's docs.

Validator translation

Please add this line to resource/lang/{locale}/validation.php (on first level) :

// EN version : resource/lang/en/validation.php
'unique_page' => 'The field :attribute must be unique in this language.',

// FR version : resource/lang/fr/validation.php
'unique_page' => 'Le champ :attribute doit être unique dans cette langue.',

Front Stuff

If you want a pre-generated front controller and route, you can run following command :

php artisan page-manager:publish-front

This command appends a route to routes/web.php and creates a new App\Http\Controllers\FrontPageController.

In Page templates use the documentation of laravel-meta to implement meta tags

Configuration

Some options that you can override are available.

php artisan vendor:publish --provider="Novius\LaravelNovaPageManager\LaravelNovaPageManagerServiceProvider" --tag="config"

Templates

To add a template, just add your custom class to templates array in configuration file.

Your class must extend Novius\LaravelNovaPageManager\Templates\AbstractPageTemplate.

Example :

In config/laravel-nova-page-manager.php

// ...

'templates' => [
    \App\Nova\Templates\StandardTemplate::class,
],

In app/Nova/Templates/StandardTemplate.php

<?php

namespace App\Nova\Templates;

use Laravel\Nova\Fields\Date;
use Laravel\Nova\Fields\Trix;
use Novius\LaravelNovaPageManager\Templates\AbstractPageTemplate;

class StandardTemplate extends AbstractPageTemplate
{
    public function templateName(): string
    {
        return trans('laravel-nova-page-manager::template.standard_template');
    }

    public function templateUniqueKey(): string
    {
        return 'standard';
    }

    public function fields(): array
    {
        return [
            Trix::make('Content', 'content'),
            Date::make('Date', 'date'),
        ];
    }
    
    public function casts() : array
    {
        return [
            'date' => 'date',        
        ];
    }
}

Pour utiliser les champs spécifique du template :

$page = \Novius\LaravelNovaPageManager\Models\Page::where('template', 'standard')->first();

$content = $page->extras['content'];

// Date will be a Carbon instance, thanks to the cast
$date = $page->extras['date'];

Lint

Run php-cs with:

composer run-script lint

Contributing

Contributions are welcome!

Leave an issue on GitHub, or create a Pull Request.

Licence

This package is under GNU Affero General Public License v3 or (at your option) any later version.