onepoint/dashboard

Laravel仪表板仓库和视图

安装: 34

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

公开问题: 0

语言:JavaScript

1.3.06 2021-11-01 09:01 UTC

README

后台操作界面及基本权限功能

安装laravel

直接从Github下载Laravel Github

一些提示步骤

composer install
複製 .env 檔案
php artisan key:generate

Homestead

laravel new 專案資料夾名稱

使用Composer安装onepoint/dashboard

执行

composer require onepoint/dashboard

在config/app.php的providers中添加

Onepoint\Dashboard\DashboardServiceProvider::class,

将必要文件复制到正确目录

先删除此文件

rm database/migrations/2014_10_12_000000_create_users_table.php

执行

php artisan vendor:publish --provider="Onepoint\Dashboard\DashboardServiceProvider"

解压vendor.zip(tinymce文件管理界面用文件)

unzip public/vendor.zip
rm public/vendor.zip

数据库设置

在这个文件中设置数据库的账号密码

  1. 将app/Providers/AppServiceProviderSample.php的内容复制到app/Providers/AppServiceProvider.php
  2. 删除app/Providers/AppServiceProviderSample.php
  3. 修改app/Providers/AppServiceProvider.php中的数据库名称密码等信息
  4. 修改.env中的数据库账号密码

创建数据库,创建时选择utf8mb4编码的数据库

执行以下指令重新生成Composer的自动读取文件列表,以免执行seed指令时找不到文件

composer dump-autoload

加入内容database/seeders/DatabaseSeeder.php

public function run()
{
    ...
    $this->call([
        UsersTableSeeder::class,
        RolesTableSeeder::class,
        RoleUsersTableSeeder::class,
        SettingsTableSeeder::class,
    ]);
}

执行以下指令建立默认的表及默认数据,执行前先修改.env中的数据库账号密码,在artisan中不会去读取app/Providers/AppServiceProvider.php设置的数据库账号密码。

php artisan migrate --seed

清空数据库,重新建立默认数据(想要重置数据库才需要执行的指令)

php artisan migrate:refresh --seed

修改config/auth.php

將 user model 改成自訂的 user model
'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => Onepoint\Base\Entities\User::class,
    ],
    ...
],

config/database.php

connections.mysql.strict 要改成 false

安装必要的Package

文章管理功能

在前面 publish 步驟時已建立 packages 資料夾,裡面有一個 base 套件

composer.json 加上
"autoload": {
    "psr-4": {
        …
        "Onepoint\\Base\\": "packages/onepoint/base/src"
    }
},

執行
composer dump-autoload

在 config/app.php 加上
'providers' => [
    …
    Onepoint\Base\BaseServiceProvider::class,
]

如果前台也要使用 package 的方式,可以參照 base 的方式建立資料夾,分別在 composer.json 及 config/app.php 加內容

缩略图Package

composer require intervention/image

// app.php 加入內容
'providers' => [
    ...
    Intervention\Image\ImageServiceProvider::class
]

'aliases' => [
    ...
    'Image' => Intervention\Image\Facades\Image::class
]

// 執行
php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravelRecent"

excelPackage

composer require maatwebsite/excel

// app.php 加入內容
'providers' => [
    ...
    Maatwebsite\Excel\ExcelServiceProvider::class,
]

'aliases' => [
    ...
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
]

// 執行
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"

查看LogPackage

composer require rap2hpoutre/laravel-log-viewer

// app.php 加入內容
'providers' => [
    ...
    Rap2hpoutre\LaravelLogViewer\LaravelLogViewerServiceProvider::class,
]

// 在 route 檔案中增加規則
Route::get('logs', '\Rap2hpoutre\LaravelLogViewer\LogViewerController@index');

编辑器文件管理Package

COMPOSER_MEMORY_LIMIT=-1 composer require unisharp/laravel-filemanager

// app.php 加入內容
'providers' => [
    ...
    UniSharp\LaravelFilemanager\LaravelFilemanagerServiceProvider::class,
]

// 執行
php artisan vendor:publish --tag=fm-config
php artisan vendor:publish --tag=fm-assets

认证相关设置

修改user.php路径

config/auth.php

'model' => App\User::class,
修改為
'model' => Onepoint\Dashboard\Entities\User::class,

如果前台有要做會員登入,在 guards 新增元素
'member' => [
    'driver' => 'session',
    'provider' => 'members',
],

在 providers 新增元素
'members' => [
    'driver' => 'eloquent',
    'model' => Onepoint\Reading\Entities\Member::class,
],

在 passwords 新增元素
'members' => [
    'provider' => 'members',
    'table' => 'password_resets',
    'expire' => 15,
],

在 app/Http/Kernel.php 增加登入檢查方法
protected $routeMiddleware = [
    ...
    // Guard 登入檢查
    'auth.guard' => \Onepoint\Dashboard\Middleware\AuthenticateGuard::class,
];

上传文件相关设置

建立软链接

php artisan storage:link
在虛擬主機上可以用這個網址來建立(相關的 route 規則要打開)
http://url/backend/dashboard/storage-link

預設目錄不是 public 的時候,要修改這個檔案
app/Providers/AppServiceProvider.php
public function register()
{
    $this->app->bind('path.public', function() {
        return base_path('../public_html');

        主程式放在 public 底下的 private 時使用的方法
        return $_SERVER['DOCUMENT_ROOT'];
    });
}

public function boot()
{
    // 強制使用 https
    \URL::forceScheme('https');
}

修改设置

config/app.php

'url' => env('APP_URL', 'https://'),
修改為
'url' => APP_URL,

'timezone' => 'UTC',
修改為
'timezone' => 'Asia/Taipei',

config/filesystems.php

'public' => [
    'url' => env('APP_URL').'/storage',
    修改為
    'url' => config('app.url').'/storage',
],

.env

APP_DEBUG=false

Homestead上传文件大小修改

默认只能上传小于1M的文件,修改后会有更好的测试效果

在設定檔中的 http 中加一行上傳檔案大小設定
sudo nano /etc/nginx/nginx.conf
http {
    client_max_body_size 100M;
}

預設可上傳 100M, 正常情況不用修改
sudo nano /etc/php/7.4/fpm/php.ini

要修改的項目
memory_limit = 128M 
post_max_size = 20M
upload_max_filesize = 10M

Homestead修改Mysql时区

cd /etc/mysql/mysql.conf.d
sudo nano mysqld.cnf

在 [mysqld] 區塊下面增加一行
default-time-zone='+08:00'

404转跳首页

app/Exceptions/Handler.php

NotFoundHttpException 使用物件
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

public function render($request, Exception $exception)
{
    if ($exception instanceof NotFoundHttpException) {
        // return redirect()->route('home');
        return redirect('index');
    }

    if ($exception instanceof \Illuminate\Session\TokenMismatchException) {
        return redirect('index');
    }
    return parent::render($request, $exception);
}