goldenscarab / modulus2
CMS 开发者专用
Requires
- php: >=8.0
- barryvdh/laravel-debugbar: >=3
- firebase/php-jwt: >=6.9
- hashids/hashids: >=4.1
- inertiajs/inertia-laravel: >=0.6.9
- maatwebsite/excel: >=3
- nwidart/laravel-modules: >=10
- spatie/laravel-permission: >=5.6
This package is auto-updated.
Last update: 2024-09-17 20:24:31 UTC
README
CMS 人员
必需
- Composer
- PHP >= 8.1
- Laravel >= 10
安装
使用 composer 安装此包。
composer require goldenscarab/modulus2
Laravel 9 使用自动加载文件,因此不需要手动添加 ServiceProvider。
发布
php artisan vendor:publish --provider="Goldenscarab\Modulus\App\Providers\PublishesServiceProvider" --force
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
安装前端依赖
bash vendor/goldenscarab/modulus2/assets_install.sh
配置资产
将文件 resources/js/app.js 中的 require('./bootstrap') 替换为
import './modulus.js'
在文件 resources/css/app.css 中添加(如果需要则创建文件)
@import "./modulus.css"
使用以下内容更新您的 vite.config.js
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import vue from '@vitejs/plugin-vue'
import path from "path";
export default defineConfig({
plugins: [
laravel({
input: ['resources/css/app.css', 'resources/js/app.js'],
refresh: true,
}),
vue()
],
resolve: {
alias: {
"~": path.resolve("node_modules"),
"@resources": path.resolve("resources"),
"@vendor": path.resolve("vendor"),
"@modulus": path.resolve("vendor/goldenscarab/modulus2"),
"@theme": path.resolve("vendor/goldenscarab/modulus2/src/resources/theme/architectui")
},
},
build: {
//sourcemap: true,
},
});
编译资产
npm run dev
配置
modulus.php 文件
编辑 config/modulus.php 文件,如示例所示
<?php
return [
/**
* Classe définissant la couleur du bandeau haut
* default: bg-focus header-text-light
* background: bg-primary, bg-secondary, bg-success, bg-info, bg-warning, bg-danger, bg-light, bg-dark, bg-focus, bg-alternate
* text: header-text-light, header-text-dark
*/
'color_header' => 'bg-focus header-text-light',
/**
* Classe definissant la couleur du menu
* default: bg-dark sidebar-text-light
* background: bg-primary, bg-secondary, bg-success, bg-info, bg-warning, bg-danger, bg-light, bg-dark, bg-focus, bg-alternate
* text: sidebar-text-light, sidebar-text-dark
*/
'color_sidebar' => 'bg-dark sidebar-text-light',
/**
* Icone du nom de l'application
* default: <i class="fa fa-puzzle-piece align-middle"></i>
*/
'app_icon' => '<i class="fa fa-puzzle-piece align-middle"></i>',
/**
* Nom de l'application
* default: <b>M</b>odulus
*/
'app_name' => '<b>M</b>odulus',
/**
* Préfixe des url de Modulus
* default: /backend
*/
'url_prefix' => '/',
/**
* Namespace des constroleurs à surcharger
* default: Goldenscarab\\Modulus\\App\\Http\\Controllers\\App\\DashboardController@index
* - DashboardController
* - App\\Http\\Controllers\\DashboardController@index
*/
'dashboard_action' => 'App\\Http\\Controllers\\HomeController@index',
/**
* Menu à afficher dans l'interface
*
* Constuction :
* - Nom du groupe
* - Element 1
* - Sous élement 1.1
* - Sous élement 1.2
* - Sous élement 1.3
* - Element 2
* - Sous élement 2.1
* - Sous élement 2.2
* - Sous élement 2.3
*
* Exemple :
* 'menu' => [
* [
* 'name' => 'Group',
* 'items' => [
* [
* 'icon' => 'pe-7s-home',
* 'name' => 'Menu name',
* 'subitems' => [
* [ 'name' => 'Item 1', 'route' => 'test.item'],
* [ 'name' => 'Item 2', 'link' => '/'],
* [ 'name' => 'Item 3', 'route' => 'test.item'],
* ]
* ]
* ]
* ],
*/
'menu' => [
[
"items" => [
[
"icon" => "pe-7s-home",
"name" => "Tableau de bord",
"url" => "/"
]
]
],
[
"items" => [
[
"icon" => "pe-7s-diamond",
"name" => "Test",
"subitems" => [
[ 'name' => 'Item 1', 'route' => 'private.test.foos.index'],
]
]
]
]
],
/**
* Message du footer
*/
'msg_footer_right' => 'La simplicité dans le sur mesure',
'msg_footer_left' => '<strong>Copyright © ' . date('Y') . ' <a href="https://www.goldenscarab.fr" target="_blanc">Goldenscarab.</a></strong> All rights reserved.',
'hashids_salt' => env('HASHIDS_SALT', 'modulus'),
'hashids_length' => env('HASHIDS_LENGTH', 16),
];
路由
您可以从 config/modulus.php 配置文件中自定义 Modulus 的基本 URL。如果您希望将 Modulus URL 定位到域名根目录,请考虑清理 routes/web.php 文件中的默认路由。
您还可以通过更改 config/modulus.php 文件中的 namespace_custom 参数来自定义仪表板。这样,您将重定向 DashboardController@index 路由到您选择的命名空间。示例
php artisan make:controller DashboardController
在 config/modulus.php 文件中
'dashboard_action' => 'App\\Http\\Controllers\\DashboardController@index',
接下来,只需自定义新创建的控制器中的 index 方法以显示新的仪表板。 App\Http\Controller\DashboardController@index
public function index()
{
$breadcrumb = [
'<i class="fa fa-home me-2"></i> Accueil' => '#'
];
return Inertia::render('Dashboard')->with([
'page_title' => 'Tableau de bord',
'page_subtitle' => 'Test',
'page_icon' => 'pe-7s-home',
'breadcrumb' => $breadcrumb
]);
}
对于视图,您可以使用以下模型
<template>
<div>
<h1>Mon dashboard ici</h1>
</div>
</template>
Insomnia
安装中间件
php artisan inertia:middleware
// App\Http\Middleware\HandleInertiaRequests
protected $rootView = 'modulus::app';
中间件
将以下内容添加到 app/Http/Kernel.php 文件中
在 $middlewareGroups 变量 > 'web' 中添加以下行
\App\Http\Middleware\HandleInertiaRequests::class,
在 $middlewareAliases 变量中添加以下行
/* Middlewares ajoutés */
'auth.active' => \Goldenscarab\Modulus\App\Http\Middleware\RedirectIfNotActive::class,
'role' => \Spatie\Permission\Middleware\RoleMiddleware::class,
'permission' => \Spatie\Permission\Middleware\PermissionMiddleware::class,
'role_or_permission' => \Spatie\Permission\Middleware\RoleOrPermissionMiddleware::class,
App
编辑应用根目录下的 .env 文件以配置数据库访问
迁移
配置数据库访问后,是时候创建表并使用初始数据填充数据库了。
php artisan migrate --seed
模块
您可以将应用程序构建为模块。一个模块示例位于 /Modules 文件夹中。
为了允许自动加载模块的类,您需要修改 composer.json 文件,如下所示
{
"autoload": {
"psr-4": {
"App\\": "app/",
"Modules\\": "Modules/"
}
}
}
认证
为了使 API 正常工作,您需要在 Kernel.php 文件中取消注释以下行
'api' => [
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, // Sanctum
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
如果出现 401 或 403 错误,请检查以下内容
APP_URL在 .env 文件中包含正确的 URL(带有正确的端口)- 迁移已成功完成,并使用了 seeders:
php artisan migrate --seed
JWT
需要在 .env 文件中添加两个属性
JWT_SECRET=secret
JWT_EXPIRATION=7200
避免出现 429(请求过多)错误
编辑 Kernel.php 文件,在 $middlewareGroups 中将 \Illuminate\Routing\Middleware\ThrottleRequests::class.':api' 替换为 \Goldenscarab\Modulus\App\Http\Middleware\ModulusThrottleMiddleware::class.':api'
protected $middlewareGroups = [
'web' => [
//...
],
'api' => [
//...
//\Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
\Goldenscarab\Modulus\App\Http\Middleware\ModulusThrottleMiddleware::class.':api',
],
];
然后您可以从配置文件 modulus.php 个性化设置 api_max_rate
在 Modulus 中显示异常
在 \App\Exceptions\Handler.php 文件中,在 register 方法中添加以下行
...
/**
* Register the exception handling callbacks for the application.
*/
public function register(): void
{
$this->reportable(function (Throwable $e) {
try {
ModulusException::store($e);
} catch (Exception $e) {
}
});
}
...
安全
如果您发现任何与安全相关的问题,请通过 contact@goldenscarab.fr 发送电子邮件,而不是使用问题跟踪器。
版权信息
许可
MIT 许可证 (MIT)。请参阅许可证文件获取更多信息。