Coder Social home page Coder Social logo

rinvex / laravel-pages Goto Github PK

View Code? Open in Web Editor NEW
38.0 5.0 8.0 299 KB

Rinvex Pages is an integral part of your content management system (CMS), it affords an easy, yet powerful way to create and manage pages with full control over their URLs, active status, titles, content, and other attributes.

License: MIT License

PHP 100.00%
php laravel pages

laravel-pages's Introduction

Rinvex Pages

Rinvex Pages is an integral part for your Laravel content management system (CMS), it affords an easy, yet powerful way to create and manage pages with full control over their URLs, active status, titles, content, and other attributes.

Packagist Scrutinizer Code Quality Travis StyleCI License

Installation

  1. Install the package via composer:

    composer require rinvex/laravel-pages
  2. Publish resources (migrations and config files):

    php artisan rinvex:publish:pages
  3. Execute migrations via the following command:

    php artisan rinvex:migrate:pages
  4. Done!

Usage

Create Your Page

To get started, you simply create a new page as follows:

$page = app('rinvex.pages.page')->create([
    'uri' => 'test',
    'slug' => 'test-page',
    'route' => 'frontend.pages.test',
    'title' => 'Test Page',
    'view' => 'test-page',
]);

// Deactivate the page
$page->deactivate();

// Activate the page
$page->activate();

// Get all pages
$pages = app('rinvex.pages.page')->all();

// Get active pages
$pages = app('rinvex.pages.page')->where('is_active', true)->get();

Notes:

  • All active pages are registered automatically into your application router with page's attributes, so the example page we created above could be accessed via the URL http://your-project/test, and you can generate page's URL using the named route route('frontend.pages.test') as you may expect. The result of accessing that page is the content of the page's rendered view.
  • Rinvex Pages auto register routes for your active pages, but you can disable routes auto registration in case you need more flexibility writing your own routes and maybe linking to your custom controllers, and that could be done from the config file config/rinvex.pages.php if you already published it in the installation step.
  • Rinvex Pages expects you to create your own views before setting in page records, and that view could be anywhere and contain anything. It's important to know that all page views have access to the $page instance variable by default, so you can access any of the page's attributes.

ADVANCED: Attach Resources to Page

Sometimes you need to attach other resources to a specific page, to display later as "Related Content" for example, the presentation layer is left to you to implement, but the following is how to attach these resources programmatically.

To attach other resources to any page, follow these two steps:

  1. Use \Rinvex\Pages\Traits\Pageable trait in your resources you need to attach.

  2. Register your resource as a pageable, and add mutator setter/getter support for in your resource in the page's model. This is done in service provider boot method. See the following example of Article resource we're attaching to the page:

use App\Models\Article;
use Illuminate\Database\Eloquent\Relations\MorphToMany;

app('rinvex.pages.pageables')->put('article', Article::class);

app('rinvex.pages.page')->macro('setArticlesAttribute', function ($articles) {
    static::saved(function (self $model) use ($articles) {
        $model->entries(Article::class)->sync($articles, true);
    });
});

app('rinvex.pages.page')->resolveRelationUsing('articles', function ($pageModel): MorphToMany {
    return $pageModel->entries(Article::class);
});

Changelog

Refer to the Changelog for a full history of the project.

Support

The following support channels are available at your fingertips:

Contributing & Protocols

Thank you for considering contributing to this project! The contribution guide can be found in CONTRIBUTING.md.

Bug reports, feature requests, and pull requests are very welcome.

Security Vulnerabilities

If you discover a security vulnerability within this project, please send an e-mail to [email protected]. All security vulnerabilities will be promptly contacted.

About Rinvex

Rinvex is a software solutions startup, specialized in integrated enterprise solutions for SMEs established in Alexandria, Egypt since June 2016. We believe that our drive The Value, The Reach, and The Impact is what differentiates us and unleash the endless possibilities of our philosophy through the power of software. We like to call it Innovation At The Speed Of Life. That’s how we do our share of advancing humanity.

License

This software is released under The MIT License (MIT).

(c) 2016-2022 Rinvex LLC, Some rights reserved.

laravel-pages's People

Contributors

dependabot-preview[bot] avatar omranic avatar rattone avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

laravel-pages's Issues

Dependabot can't resolve your PHP dependency files

Dependabot can't resolve your PHP dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

Your requirements could not be resolved to an installable set of packages.
  Problem 1
    - illuminate/console 9.x-dev is an alias of illuminate/console dev-master and thus requires it to be installed too.
    - Conclusion: don't install illuminate/console dev-master (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.0.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.0.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.0.2 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.0.3 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.0.4 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.1.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.2.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.3.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.4.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.5.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.6.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.7.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.7.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.8.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.9.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.10.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.11.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.11.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.11.2 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.12.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.12.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.12.2 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.12.3 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.13.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.14.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.15.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.16.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.16.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.17.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.17.2 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.18.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.18.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.19.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.20.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.20.1 (conflict analysis result)
    - illuminate/validation[v5.5.0, ..., 5.5.x-dev] require illuminate/container 5.5.* -> found illuminate/container[v5.5.0, ..., 5.5.x-dev] but it conflicts with your root composer.json require (^8.0.0 || ^9.0.0).
    - illuminate/validation[v5.6.0, ..., 5.6.x-dev] require illuminate/container 5.6.* -> found illuminate/container[v5.6.0, ..., 5.6.x-dev] but it conflicts with your root composer.json require (^8.0.0 || ^9.0.0).
    - illuminate/validation[v5.7.0, ..., 5.7.x-dev] require illuminate/container 5.7.* -> found illuminate/container[v5.7.0, ..., 5.7.x-dev] but it conflicts with your root composer.json require (^8.0.0 || ^9.0.0).
    - rinvex/laravel-support v5.0.2 requires rinvex/tmp-felixkiss-uniquewith-validator 3.4.0 -> satisfiable by rinvex/tmp-felixkiss-uniquewith-validator[3.4.0].
    - rinvex/laravel-support[v5.0.0, ..., v5.0.1] require felixkiss/uniquewith-validator ^3.4.0 -> satisfiable by felixkiss/uniquewith-validator[3.4.0].
    - rinvex/tmp-felixkiss-uniquewith-validator 3.4.0 requires illuminate/validation ^5.5|^6.0|^7.0 -> satisfiable by laravel/framework[v5.8.0, ..., 5.8.x-dev, v6.0.0, ..., 6.x-dev, v7.0.0, ..., 7.x-dev], illuminate/validation[v5.5.0, ..., 5.8.x-dev, v6.0.0, ..., 6.x-dev, v7.0.0, ..., 7.x-dev].
    - illuminate/validation[v7.0.0, ..., 7.x-dev] require illuminate/translation ^7.0 -> satisfiable by laravel/framework[v7.0.0, ..., 7.x-dev], illuminate/translation[v7.0.0, ..., 7.x-dev].
    - illuminate/translation[v7.0.0, ..., 7.x-dev] require illuminate/support ^7.0 -> satisfiable by laravel/framework[v7.0.0, ..., 7.x-dev].
    - felixkiss/uniquewith-validator 3.4.0 requires illuminate/support ^5.5|^6.0|^7.0 -> satisfiable by laravel/framework[v5.8.0, ..., 5.8.x-dev, v6.0.0, ..., 6.x-dev, v7.0.0, ..., 7.x-dev].
    - illuminate/validation[v6.0.0, ..., 6.x-dev] require illuminate/translation ^6.0 -> satisfiable by laravel/framework[v6.0.0, ..., 6.x-dev], illuminate/translation[v6.0.0, ..., 6.x-dev].
    - illuminate/translation[v6.0.0, ..., 6.x-dev] require illuminate/support ^6.0 -> satisfiable by laravel/framework[v6.0.0, ..., 6.x-dev].
    - illuminate/validation[v5.8.0, ..., 5.8.x-dev] require illuminate/translation 5.8.* -> satisfiable by laravel/framework[v5.8.0, ..., 5.8.x-dev], illuminate/translation[v5.8.0, ..., 5.8.x-dev].
    - illuminate/translation[v5.8.0, ..., 5.8.x-dev] require illuminate/support 5.8.* -> satisfiable by laravel/framework[v5.8.0, ..., 5.8.x-dev].
    - Only one of these can be installed: laravel/framework[v5.8.0, ..., 5.8.x-dev, v6.0.0, ..., 6.x-dev, v7.0.0, ..., 7.x-dev], illuminate/console[dev-master, v8.0.0, ..., 8.x-dev]. laravel/framework replaces illuminate/console and thus cannot coexist with it.
    - Root composer.json requires illuminate/console ^8.0.0 || ^9.0.0 -> satisfiable by illuminate/console[v8.0.0, ..., 8.x-dev, 9.x-dev (alias of dev-master)].
    - Root composer.json requires rinvex/laravel-support ^5.0.0 -> satisfiable by rinvex/laravel-support[v5.0.0, v5.0.1, v5.0.2].

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

Dependabot can't resolve your PHP dependency files

Dependabot can't resolve your PHP dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

Your requirements could not be resolved to an installable set of packages.
  Problem 1
    - Root composer.json requires rinvex/laravel-support ^5.0.0 -> satisfiable by rinvex/laravel-support[v5.0.0].
    - Conclusion: don't install illuminate/console v8.0.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.0.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.0.2 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.0.3 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.0.4 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.1.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.2.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.3.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.4.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.5.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.6.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.7.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.7.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.8.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.9.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.10.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.11.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.11.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.11.2 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.12.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.12.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.12.2 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.12.3 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.13.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.14.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.15.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.16.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.16.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.17.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.17.2 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.18.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.18.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.19.0 (conflict analysis result)
    - rinvex/laravel-support v5.0.0 requires felixkiss/uniquewith-validator ^3.4.0 -> satisfiable by felixkiss/uniquewith-validator[3.4.0].
    - illuminate/console 9.x-dev is an alias of illuminate/console dev-master and thus requires it to be installed too.
    - Conclusion: don't install illuminate/console dev-master (conflict analysis result)
    - felixkiss/uniquewith-validator 3.4.0 requires illuminate/support ^5.5|^6.0|^7.0 -> satisfiable by laravel/framework[v5.8.0, ..., 5.8.x-dev, v6.0.0, ..., 6.x-dev, v7.0.0, ..., 7.x-dev].
    - Only one of these can be installed: laravel/framework[v5.8.0, ..., 5.8.x-dev, v6.0.0, ..., 6.x-dev, v7.0.0, ..., 7.x-dev], illuminate/console[dev-master, v8.0.0, ..., 8.x-dev]. laravel/framework replaces illuminate/console and thus cannot coexist with it.
    - Root composer.json requires illuminate/console ^8.0.0 || ^9.0.0 -> satisfiable by illuminate/console[v8.0.0, ..., 8.x-dev, 9.x-dev (alias of dev-master)].

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

Dependabot can't resolve your PHP dependency files

Dependabot can't resolve your PHP dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

Your requirements could not be resolved to an installable set of packages.
  Problem 1
    - Root composer.json requires rinvex/laravel-support ^5.0.0 -> satisfiable by rinvex/laravel-support[v5.0.0].
    - Conclusion: don't install illuminate/console v8.0.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.0.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.0.2 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.0.3 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.0.4 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.1.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.2.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.3.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.4.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.5.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.6.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.7.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.7.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.8.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.9.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.10.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.11.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.11.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.11.2 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.12.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.12.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.12.2 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.12.3 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.13.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.14.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.15.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.16.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.16.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.17.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.17.2 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.18.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.18.1 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.19.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.20.0 (conflict analysis result)
    - Conclusion: don't install illuminate/console v8.20.1 (conflict analysis result)
    - rinvex/laravel-support v5.0.0 requires felixkiss/uniquewith-validator ^3.4.0 -> satisfiable by felixkiss/uniquewith-validator[3.4.0].
    - illuminate/console 9.x-dev is an alias of illuminate/console dev-master and thus requires it to be installed too.
    - Conclusion: don't install illuminate/console dev-master (conflict analysis result)
    - felixkiss/uniquewith-validator 3.4.0 requires illuminate/support ^5.5|^6.0|^7.0 -> satisfiable by laravel/framework[v5.8.0, ..., 5.8.x-dev, v6.0.0, ..., 6.x-dev, v7.0.0, ..., 7.x-dev].
    - Only one of these can be installed: laravel/framework[v5.8.0, ..., 5.8.x-dev, v6.0.0, ..., 6.x-dev, v7.0.0, ..., 7.x-dev], illuminate/console[dev-master, v8.0.0, ..., 8.x-dev]. laravel/framework replaces illuminate/console and thus cannot coexist with it.
    - Root composer.json requires illuminate/console ^8.0.0 || ^9.0.0 -> satisfiable by illuminate/console[v8.0.0, ..., 8.x-dev, 9.x-dev (alias of dev-master)].

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

Published migrations are ignored

calling php artisan migrate:refresh --seed after you've change a column or two (in this case I have changed sort_order to sort, because that's what I have in the config for spatie/eloquent-sortable) throws an error:

Seeding: Database\Seeders\PageSeeder

   Illuminate\Database\QueryException 

  SQLSTATE[42S22]: Column not found: 1054 Unknown column 'sort' in 'field list' (SQL: select max(`sort`) as aggregate from `pages` where `pages`.`deleted_at` is null)

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:692
    688▕         // If an exception occurs when attempting to run a query, we'll format the error
    689▕         // message to include the bindings with SQL, which will make this exception a
    690▕         // lot more helpful to the developer instead of just the database's errors.
    691▕         catch (Exception $e) {
692            throw new QueryException(
    693▕                 $query, $this->prepareBindings($bindings), $e
    694▕             );
    695▕         }
    696▕ 

  A column was not found: You might have forgotten to run your migrations. You can run your migrations using `php artisan migrate`. 
    https://laravel.com/docs/master/migrations#running-migrations

      +27 vendor frames 
  28  database/seeders/PageSeeder.php:18
      Illuminate\Database\Eloquent\Model::__callStatic()

      +7 vendor frames 
  36  database/seeders/DatabaseSeeder.php:24
      Illuminate\Database\Seeder::call()
megaplate git:(main)  php artisan db                    

MariaDB [megaplate]> describe pages;
+------------+-----------------------+------+-----+---------+----------------+
| Field      | Type                  | Null | Key | Default | Extra          |
+------------+-----------------------+------+-----+---------+----------------+
| id         | int(10) unsigned      | NO   | PRI | NULL    | auto_increment |
| uri        | varchar(255)          | NO   |     | NULL    |                |
| slug       | varchar(255)          | NO   |     | NULL    |                |
| route      | varchar(255)          | NO   |     | NULL    |                |
| domain     | varchar(255)          | YES  | MUL | NULL    |                |
| middleware | longtext              | YES  |     | NULL    |                |
| title      | longtext              | NO   |     | NULL    |                |
| subtitle   | longtext              | YES  |     | NULL    |                |
| excerpt    | longtext              | YES  |     | NULL    |                |
| content    | longtext              | YES  |     | NULL    |                |
| view       | varchar(255)          | NO   |     | NULL    |                |
| is_active  | tinyint(1)            | NO   |     | 1       |                |
| sort_order | mediumint(8) unsigned | NO   |     | 0       |                |
| created_at | timestamp             | YES  |     | NULL    |                |
| updated_at | timestamp             | YES  |     | NULL    |                |
| deleted_at | timestamp             | YES  |     | NULL    |                |
+------------+-----------------------+------+-----+---------+----------------+
16 rows in set (0.001 sec)

MariaDB [megaplate]> quit;
Bye
megaplate git:(main)  cat database/migrations/rinvex/laravel-pages/2021_06_30_193226_create_pages_table.php 
<?php

declare(strict_types=1);

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreatePagesTable extends Migration
{

    /**
     * The database schema.
     *
     * @var \Illuminate\Database\Schema\Builder
     */
    protected $schema;

    /**
     * Create a new migration instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->schema = Schema::connection($this->getConnection());
    }

    /**
     * Get the migration connection name.
     *
     * @return string|null
     */
    public function getConnection()
    {
        return config('database.default');
    }

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up(): void
    {
        $this->schema->create(config('rinvex.pages.tables.pages'), function (Blueprint $table) {
            // Columns
            $table->increments('id');
            $table->uuid('uuid');
            $table->string('uri');
            $table->string('slug');
            $table->string('route');
            $table->string('domain')->nullable();
            $table->text('middleware')->nullable();
            $table->text('title');
            $table->text('subtitle')->nullable();
            $table->text('excerpt')->nullable();
            $table->text('content')->nullable();
            $table->text('body');
            $table->string('layout')->nullable();
            $table->string('view');
            $table->boolean('is_active')->default(true);
            $table->mediumInteger('sort')->unsigned();
            $table->text('meta')->nullable();
            $table->unsignedBigInteger('created_by')->nullable();
            $table->unsignedBigInteger('updated_by')->nullable();
            $table->unsignedBigInteger('deleted_by')->nullable();
            $table->timestamps();
            $table->softDeletes();

            // Indexes
            $table->unique(['domain', 'uri']);
            $table->unique(['domain', 'slug']);
            $table->unique(['domain', 'route']);
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down(): void
    {
        $this->schema->dropIfExists(config('rinvex.pages.tables.pages'));
    }
}
megaplate git:(main)  cat config/rinvex.pages.php                                                          
<?php

declare(strict_types=1);

return [

    // Manage autoload migrations
    'autoload_migrations' => true,

    // Pageable Database Tables
    'tables' => [
        'pages' => 'pages',
        'pageables' => 'pageables',
    ],

    // Pageable Models
    'models' => [
        'page' => \Rinvex\Pages\Models\Page::class,
    ],

    // Register routes
    'register_routes' => true,

];
megaplate git:(main)  

[Proposal] Dynamically adding more content to the page

Taking into consideration pages with more content like faq page that needs more than only a title, subtitle, excerpt, and content it will be nice if we can extend the data that could be changed dynamically to more maybe we can call the column data.

This column can contain a JSON string that represents all the data needed for the current page for example in a faq it will contain an array of the questions with their answers. so when these data are passed to the view the developer will be responsible for rendering it.

Another implementation -which I think is more complex but introduces more usability- could be using a Schema for defining what data the view needs and based on it each page uses this view should provide the data needed for its schema. introducing a predefined schema will make it easier to render the data and will allow us easily generate a form for the admin to provide the data needed for each page.

this implementation will introduce the use of one view in multiple pages so I think the schema will look similar to this.

views table:

  • id
  • slug
  • view_path
  • schema

pages table:

  • id
  • slug
  • view_id
  • data
  • other columns

installing issue

Hi, I am getting the following error while installing the package.

 Problem 1
    - rinvex/laravel-pages[dev-master, dev-develop, v6.0.0, ..., v6.1.0] require rinvex/laravel-support ^6.0.0 -> satisfiable by rinvex/laravel-support[v6.0.0, ..., v6.1.0].
    - rinvex/laravel-pages v5.0.7 requires rinvex/laravel-support ^5.0.0 -> satisfiable by rinvex/laravel-support[v5.0.0, ..., v5.0.19].
    - rinvex/laravel-pages[v5.0.1, ..., v5.0.6] require spatie/eloquent-sortable ^3.7.0 -> satisfiable by spatie/eloquent-sortable[3.7.0, ..., 3.11.0].
    - rinvex/laravel-support v5.0.2 requires rinvex/tmp-watson-validating 6.0.0 -> satisfiable by rinvex/tmp-watson-validating[6.0.0].
    - rinvex/laravel-support[v5.0.3, ..., v5.0.10] require rinvex/tmp-watson-validating ^6.0.0 -> satisfiable by rinvex/tmp-watson-validating[6.0.0, ..., 6.0.4].
    - rinvex/laravel-support[v5.0.11, ..., v5.0.19, v6.0.0, ..., v6.0.3] require felixkiss/uniquewith-validator ^3.4.2 -> satisfiable by felixkiss/uniquewith-validator[3.4.2].
    - rinvex/laravel-support v5.0.1 requires felixkiss/uniquewith-validator ^3.4.0 -> satisfiable by felixkiss/uniquewith-validator[3.4.0, 3.4.1, 3.4.2].
    - rinvex/laravel-pages[v0.0.1, ..., v0.0.2, v1.0.0, ..., v1.0.2] require php ^7.1.3 -> your php version (8.1.0) does not satisfy that requirement.
    - felixkiss/uniquewith-validator[3.4.0, ..., 3.4.1] require php ^7.1.3 -> your php version (8.1.0) does not satisfy that requirement.
    - rinvex/laravel-pages[v2.0.0, ..., v2.1.1, v3.0.0, ..., v3.0.2] require php ^7.2.0 -> your php version (8.1.0) does not satisfy that requirement.
    - rinvex/laravel-pages[v4.0.0, ..., v4.1.2, v5.0.0] require php ^7.4.0 -> your php version (8.1.0) does not satisfy that requirement.
    - rinvex/laravel-support v5.0.0 require php ^7.4.0 -> your php version (8.1.0) does not satisfy that requirement.
    - spatie/eloquent-sortable[3.7.0, ..., 3.8.2] require php ^7.2 -> your php version (8.1.0) does not satisfy that requirement.
    - spatie/eloquent-sortable[3.8.3, ..., 3.9.0] require php ^7.3 -> your php version (8.1.0) does not satisfy that requirement.
    - rinvex/tmp-watson-validating[6.0.0, ..., 6.0.2] require php ^7.3 -> your php version (8.1.0) does not satisfy that requirement.
    - spatie/eloquent-sortable[3.10.0, ..., 3.11.0] require illuminate/database ^6.0|^7.0|^8.0 -> found illuminate/database[v6.0.0, ..., 6.x-dev, v7.0.0, ..., 7.x-dev, v8.0.0, ..., 8.x-dev] but these were not loaded, likely because it conflicts with another require.
    - rinvex/tmp-watson-validating 6.0.3 requires php ^7.3 || v8.0.0 -> your php version (8.1.0) does not satisfy that requirement.
    - rinvex/tmp-watson-validating 6.0.4 requires illuminate/contracts ^8.0.0 -> found illuminate/contracts[v8.0.0, ..., 8.x-dev] but these were not loaded, likely because it conflicts with another require.
    - felixkiss/uniquewith-validator 3.4.2 requires illuminate/support ^5.5|^6.0|^7.0|^8.0 -> found illuminate/support[v5.5.0, ..., 5.8.x-dev, v6.0.0, ..., 6.x-dev, v7.0.0, ..., 7.x-dev, v8.0.0, ..., 8.x-dev] but these were not loaded, likely because it conflicts with another require.
    - rinvex/laravel-support v6.1.0 requires felixkiss/uniquewith-validator dev-l9-compatibility -> found felixkiss/uniquewith-validator[dev-master, 1.0.0, ..., 1.1.4, 2.0.0, ..., 2.0.8, 3.0.0, ..., 3.4.2] but it does not match the constraint.
    - Root composer.json requires rinvex/laravel-pages * -> satisfiable by rinvex/laravel-pages[dev-master, dev-develop, v0.0.1, v0.0.2, v1.0.0, v1.0.1, v1.0.2, v2.0.0, v2.1.0, v2.1.1, v3.0.0, v3.0.1, v3.0.2, v4.0.0, ..., v4.1.2, v5.0.0, ..., v5.0.7, v6.0.0, v6.0.1, v6.1.0, 9999999-dev].


Installation failed, reverting ./composer.json and ./composer.lock to their original content.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.