Routes
La gestion des routes dans les extensions du CMS ClientXCMS suit le même principe que dans Laravel. Chaque extension peut définir ses propres routes dans des fichiers séparés, par exemple dans routes/web.php
pour les routes publiques, et routes/admin.php
pour les routes d'administration.
Exemple de route
Voici un exemple simple de route définie dans le fichier routes/web.php
d'une extension :
<?php
// addons/fund/routes/web.php
use Illuminate\Support\Facades\Route;
Route::get('/fund', function () {
return view('fund::index');
})->name('fund.index');
Dans cet exemple, une route GET
est définie pour l'URL /fund
, qui retourne la vue fund::index
. Le système va chercher dans le thème actuel /resources/themes/{theme}/views/fund/index.blade.php
si celui-ci n’existe pas, il ira chercher dans votre dossier /addons/fund/views/default/index.blade.php
.
Nous conseillons par ailleurs l'utilisation des controllers de laravel. Plus d'informations sur leur propre documentation
Enregistrement des routes
Pour que ces routes soient correctement chargées par CLIENTXCMS, il faut les enregistrer dans le ServiceProvider
de l'extension. Voici un exemple de FundServiceProvider
avec l'enregistrement des routes :
<?php
// addons/fund/src/FundServiceProvider.php
namespace App\Addons\Fund;
use \App\Extensions\BaseAddonServiceProvider;
class FundServiceProvider extends BaseAddonServiceProvider
{
protected string $uuid = 'fund';
public function register()
{
//
}
public function boot()
{
$this->loadViews(); // Permet de charger les vues (views/admin et views/default)
$this->loadTranslations(); // Permet de charger les traductions (lang/fr et lang/en)
$this->loadMigrations(); // Permet de charger les migrations
// Routes d'administration
\Route::middleware(['web', 'admin'])
->prefix(admin_prefix())
->name($this->uuid . '.')
->group(function () {
require addon_path($this->uuid, 'routes/admin.php');
});
// Routes publiques
\Route::middleware(['web'])
->name($this->uuid . '.admin.')
->group(function () {
require addon_path($this->uuid, 'routes/web.php');
});
}
}
Gestion des routes
Ceci est convention, elle n'est pas obligatoire, mais fortement recommandée.
- Les routes d'administration sont chargées depuis
routes/admin.php
. Elles utilisent les middlewaresweb
etadmin
, et sont préfixées avec le préfixe d'administration défini par la fonctionadmin_prefix()
. - Les routes publiques sont chargées depuis
routes/web.php
et utilisent uniquement le middlewareweb
. Elles sont accessibles sans restrictions particulières.