gogilo / admin-md

基于 Material Dashboard 主题的 Laravel CMS

0.0.0 2023-07-10 03:08 UTC

This package is auto-updated.

Last update: 2024-09-22 07:56:59 UTC


README

该软件包是一个包含所有常用功能的 Laravel 网站内容管理系统。它拥有一个功能齐全的后端用于管理网站,并使用 Laravel 5.*、bootstrapCSS、jquery、fontawesome、DataTable、Tinymce 等等。

它设置和使用非常简单。只需创建一个使用 blade 模板的主题,正如所必需的那样。

安装

通过 Composer

composer require gogilo/admin

或者

您也可以按照以下方式更新您的 composer.json

"require": {
    "gogilo/admin": "dev-master"
}

然后运行

composer update

将服务提供者添加到提供者列表

对于使用 Laravel 5.5 及以上版本的用户,这一步是可选的,因为该软件包可以被 Laravel 发现。但是,如果您禁用了该软件包的可发现性或您正在使用较低版本的 Laravel,您始终可以将此服务提供者添加到您 config/app.php 文件中的服务提供者列表中

Ogilo\AdminMd\AdminServiceProvider::class,

处理对管理路由的访客访问

为确保用户在尝试访问管理页面时被导向正确的登录页面,请在 app/Exceptions/Handler.php 中修改 unauthenticated() 函数,添加以下内容

if(is_admin_path()){
    return redirect()->guest('admin/login');
}

如果函数尚未存在于您的异常处理类中,您可以直接添加以下函数以覆盖继承的函数。

php artisan admin:fix_exception

安装或更新

运行 artisan admin:install/admin:update 命令以创建 CMS 所需的所有表,包括所有角色和用户表以及发布所有必需的资源;

此命令将安装所有前端组件,创建必要的数据库结构(执行迁移)并发布软件包所需的资源。

php artisan admin:install

每次更新 gogilo/admin 后,运行 admin:update 命令都是必要的,这将修复任何数据库结构更改,任何主题更改,并且还会执行必要的清理/家务。

php artisan admin:update

配置 sanctum

为 spa api 身份验证配置 sanctum

  1. 在 app/Http/Kernel.php 文件中取消注释 EnsureFrontendRequestsAreStateful::class 中间件
    \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
    'throttle:api',
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
],
  1. 在 config/sanctum.php 文件中更改

'guard' => ['web'],

'guard' => ['admin'],

  1. 在 config/cors.php 文件中更改行

'supports_credentials' => false,

'supports_credentials' => true,

  1. 使用以下内容更新您的 .env 文件
SESSION_DOMAIN=.example.com

守卫和认证提供者

更新 config/auth.php 文件以包含管理员提供者和管理员守卫

将以下内容添加到您的认证提供者列表中

'admins' => [
    'driver' => 'eloquent',
    'model' => Ogilo\AdminMd\Models\Admin::class,
],

将以下内容添加到您的守卫列表中

'admin' => [
    'driver' => 'session',
    'provider' => 'admins',
],

为 API 也记住

'api' => [
    'driver' => 'token',
    'provider' => 'admins',
    'hash' => false,
],

将登录路由添加到 routes/web.php

php artisan admin:fix_route

扩展 Admin

您可以通过创建您自己的自定义内容类型并为其提供链接来轻松地向 CMS 的管理部分添加更多项目。这可以是您的应用程序,通过添加几个控制器、模型和视图来实现。

路由

确保您的路由由 "auth:admin" 守卫保护

示例
Route::group(['middleware'=>'auth:admin','prefix'=>'admin','as'=>'admin'],function(){
    Route::get('',['as'=>'-example','uses'=>'SomeController@someMethod']);
});

这将创建一个名为 admin-example 的路由,URI 为 /admin/example

菜单

通过将其添加到 admin.menu 配置中,将您的项目添加到管理菜单/导航中。您应该在应用程序/软件包的服务提供者类的 boot 方法中执行此操作。

示例
class AppServiceProvider{
    ...
    function boot(){
        config(['admin.menu.admin-example'=>'Examples']);
    }
    ...
}
子菜单

您还可以使用上述简单配置创建下拉菜单(s)。使用您的配置名称作为键,而子菜单(s)和项目将作为子菜单的标题替换数组。

示例
function boot(){
        config(['admin.menu.admin-example'=>[
            [
                'caption'=>'Menu One',
                'submenu'=>[
                    'menu-one-route-name-one'=>'Caption One',
                    'menu-one-route-name-two'=>'Caption Two',
                    'menu-one-route-name-three'=>'Caption Three',
                    'menu-one-route-name-four'=>'Caption Four',
                ]
            ],[
                'caption'=>'Menu Two',
                'submenu'=>[
                    'menu-two-route-name-one'=>'Menu 2 Caption One',
                    'menu-two-route-name-two'=>'Menu 2 Caption Two',
                    'menu-two-route-name-three'=>'Menu 2 Caption Three',
                    'menu-two-route-name-four'=>'Menu 2 Caption Four',
                    'menu-two-route-name-five'=>'Menu 2 Caption Five',
                ]
            ]
        ]]);
    }

如果您只有一个子菜单,可以直接将数组传递给根键,如下所示

function boot(){
    config(['admin.menu.admin-example'=>
        [
            'caption'=>'Menu One',
            'submenu'=>[
                'menu-one-route-name-one'=>'Caption One',
                'menu-one-route-name-two'=>'Caption Two',
                'menu-one-route-name-three'=>'Caption Three',
                'menu-one-route-name-four'=>'Caption Four',
            ]
        ]
    ]);
}

注意:每个子菜单都必须有一个标题和子菜单键。标题将是菜单的标题,而子菜单将包含子菜单中所有条目的路由标题键值对。

要在子菜单中添加分隔符。只需添加一个短横线键值对项

'-'=>'-'
'submenu'=>[
        'menu-one-route-name-one'=>'Caption One',
        'menu-one-route-name-two'=>'Caption Two',
        '-'=>'-',
        'menu-one-route-name-three'=>'Caption Three',
        'menu-one-route-name-four'=>'Caption Four',
    ]

视图

您的视图应该

  1. 扩展admin::layout.main。
  2. 在您的视图中包含以下部分:i) 标题 ii) 页面标题 iii) 面包屑 iv) 侧边栏 v) 内容 vi) 样式 vii) scripts_top viii) scripts_bottom
示例
@extends('admin::layout.main')

@section('title')
    Title
@endsection

@section('page_title')
    <i class="fa fa-list-alt"></i> Item
@endsection

@section('breadcrumbs')
    @parent
    <li class="active"><span><i class="fa fa-list-alt"></i> Item</span></li>
@endsection

@section('sidebar')
    @parent
    {{-- @include('admin::some-additional sidebar items') --}}
@endsection

@section('content')
    Put content details
@endsection

@section('styles')
    <style type="text/css">

    </style>
@endsection
@section('scripts_top')
    <script type="text/javascript">

    </script>
@endsection

@section('scripts_bottom')
    <script type="text/javascript">

    </script>
@endsection

反馈表单处理

通过将数据提交到Laravel的contact/post或contact-post路由来提交反馈。需要提交以下参数

url: domain.tld/contact/post
OR
url: {{ route('contact-post') }}

和以下数据

data:
{
    "name": "appropriate name",
    "email": "email@example",
    "phone": "valid phone number",
    "comments": "some comment text"
}

名称、电子邮件和评论字段是必需的。

响应

在提交评论后,您将获得一个json响应,用于错误或成功

错误
{
    "success": false,
    "message": "Additional error message"
}
成功
{
    "success": true,
    "message": "Success message"
}

您可以处理此响应并提供适当的响应。

视图中的输入字段

选择

要启用选择选择器,请在选择元素中包含以下属性

<select class="selectpicker" data-live-search="true" data-size="5"></select>

示例

<select name="selectInput" class="selectpicker" data-live-search="true" data-size="5">
<option>Text 1</option>
<option>Text 2</option>
<option>Text 3</option>
<option>Text 4</option>
</select>

前端

您现在可以在管理页面中使用vuejs。所有与admin相关的vuejs组件以及任何相关的sass文件将被编译到admin.js和admin.css文件中,因此需要您修改wbpack.mix.js以覆盖这两个文件。以下步骤将帮助您处理这种情况。

1. 发布Vue资源

运行带有标签vue-resources的publish artisan命令,如下所示

php artisan vendor:publish --tag=vue-resources

2. 更新webpack.mix.js文件

将admin.js和admin.css的编译添加到webpack配置中

mix.js('resources/assets/js/app.js', 'public/js')
   .sass('resources/assets/sass/app.scss', 'public/css')
   .js('resources/assets/vendor/admin/js/admin.js','public/vendor/admin/js')
   .sass('resources/assets/vendor/admin/scss/admin.scss', 'public/vendor/admin/css');

设置

Admin CMS现在为网站管理员提供了一个快速工具,用于快速有效地生成网站地图,使用URL [site_url]/admin/setup。

点击生成网站地图,它将快速在网站public_path上为您生成。

您还可以使用控制台运行以下命令

php artisan sitemap:generate

您可以使用Laravel的任务调度器定期安排生成网站地图。

// app/Console/Kernel.php
protected function schedule(Schedule $schedule)
{
    ...
    $schedule->command('sitemap:generate')->daily();
    ...
}

祝您网站建设愉快

由乔治·奥吉洛 info@gogilo.com https://www.gogilo.com +254711347184/+254735388704