PyroCMS v3.7-beta

Ryan Thompson Releases

PyroCMS v3.7-beta one of our biggest releases yet. Lot's to talk about! So let's get to it.


Please refer to the upgrade guide for mode detailed information on upgrading your applications.

Laravel 5.7

We've updated to Laravel 5.7.

Deprecated Legacy Installer

The installer package has been deprecated and has been removed from 3.7 documentation:

Please use composer create-project pyrocms/pyrocms instead:

Shift to Laravel Mix

We are deprecating our PHP compiler Assetic. Unfortunately this package has long fallen behind. It is becoming very difficult to justify carrying its weight.

Themes and addons are now scaffolded for use with an npm run install && npm run watch and go approach using Laravel Mix. Webkit and similar tooling is clearly the standard and this project and it's developers will greatly benefit from the shift away from PHP compilers.

This is also a performance update because Assetic causes additional load when checking things for cache and compiling on the fly. Not to mention a slightly lighter project footprint will come of eventually dropping it and it's dependencies entirely in 4.0.

New Documentation

Initial documentation reformation has begun. You can see the progress starting here:

Much work has already been done but this is an ongoing effort to continuously improve documentation from here forward. So far, structure has been improved. Content has been improved. Formatting has been improved and maintainability as well. Some standards have also been put in place to ensure more thorough and consistent documentation process and outcome going forward.

Table Plugin Function

You can now use table much like you can form or entries to display an entry table in your views.

Table Function Documentation

Shortcut UI

We've added UI for notification-like indicator / shortcuts in the topbar of the control panel.

Shortcuts UI Documentation

Automatic Routing

We've automated controller actions to routes for you based on a predictable pattern. This reduced the amount of routes needing stored and looked through tremendously. Huge thanks to @frednwt for helping with this feature!

Automatic Routing Documentation

Automatic Override Deprecation

Addon's no longer automatically override views using the resources/views/addons/** directory method.

This feature will remain until it's removed in the next version. You can disable it for testing or new projects by placing AUTOMATIC_ADDON_OVERRIDES=false in your project's .env file.

View Override Documentation

Disabled Laravel Package Discovery

We've added the following to the extra section of our composer.json file.

Some addons like our new System module leverage package dependencies that would otherwise be auto-discovered. We need to retain control over registration in general so make sure to disable auto-discover for Laravel packages.

"laravel": {
    "dont-discover": [

System Module Release

The System module is built on top of Laravel's Telescope package but is contained within the Control Panel and has some added functionality.

Addon Updates

Many addons have been cleaned up in order to improve performance, leverage automatic routing, remove assetic dependencies, and in preparation for the new marketplace. Below are the feature/functionality updates in 3.7 core addons.

Settings Module Update

The settings module now dumps settings to file for caching. We've also addressed issues around caching configuration so you can now run php artisan config:cache out of the box.

Settings Module

Redirects Module Update

Redirects now dumps redirects to route file and caches domain redirects too. The php artisan route:cache command is now supported out of the box.

Redirects Module

Addons Module Update

Addons has been reworked in preparation for the new marketplace. We've improved on over-the-air addon management and shifted to caching repository listings locally in the database. Once initially imported (behind the scenes) listings will be kept up to date automatically.

To get started with the new addons module after updating, run php artisan addon:reinstall addons --seed and then run php artisan addons:sync for an initial import.

Addons Module

Users Module Update

We've made a couple small adjustments to clean up multi-factor authentication (see the Authy Authenticator post released in parallel with this one).

Users Module

Pages Module Update

Pages now support translatable slugs and therefore translatable URI paths. We've also added fixed route names to pages so you can refer to their immutable route name instead of the path or fetching by ID from the DB.

Pages also dump routes to file now in order to reduce overhead in routing pages and support route caching.

Lastly pages can now be scheduled similar to Posts. You can enable a page and schedule it to go live at a later time.

Pages Module

Posts Module Update

Posts now support translatable slugs.

Posts Module

Files Module Update

Added ability to move files from folder to folder. Vastly improved file.url or $file->url() performance.

Files Module

Multiple Field Type Update

Added the ability to check multiple records and add selected to your selection.

Multiple Field Type

Files Field Type Update

Added the ability to check multiple files and add selected to your selection.

Added allowed_types validation to selections.

Files Field Type

File Field Type Update

Added allowed_types validation to selection.

File Field Type

Grid Field Type

If you are using the Grid field type you will need to update to the latest version to fix an issue with Laravel compatibility.

What's next?

Focus going forward is heavy on performance and establishing a base of functional tests. We are looking for community members willing and able to help with testing!

We will also be focusing heavily on continuing documentation support. We've got structural standards and patterns that help making the decisions on documentation much easier and speeds up the process drastically.

Lastly but not least, we're working on a new website and control panel for the 4.0 release that will, similar to 3.0, encompass what we've learned the last few years and drastically improve documentation even more so, as well as provide developers with a true addon marketplace and account management area. More on these fronts as they become available.


- Ryan