hgists/lumener

Adminer/Adminer Editor for Lumen/Laravel 5.*

v1.1 2019-05-03 21:12 UTC

This package is auto-updated.

Last update: 2024-09-04 09:40:50 UTC


README

Scrutinizer Code Quality Build Status Latest Packagist Version Software License

Adminer 是一个用 PHP 编写的功能齐全的数据库管理工具。此包通过充当包装器并处理兼容性问题,将 adminer 界面集成到您的 Lumen 或 Laravel 项目中。Lumener 还提供了通过 artisan 命令更新、美化或扩展 adminer 的方法。

最初是从 leung/laravel-adminer 分支出来的。该包使用 Lumen 进行开发和测试。因此,Laravel 的支持未经测试(尽管不应该有任何更改会破坏它)。请随意在 Laravel 上测试并打开问题和/或提交拉取请求!

要求

通用

  • guzzlehttp/guzzle

Lumen

  • illuminate/cookie
  • illuminate/session

安装

# Install package
composer require hgists/lumener
# Download latest Adminer
php artisan lumener:update
# [Optional] Apply theme
php artisan lumener:stylize

对于 Lumen 或 Laravel 5.4 或更早版本,请参阅下一节。

提供者

提供者将自动创建任何所需的根目录并启用 artisan 命令。

Lumen

打开您的 bootstrap/app.php 并在 return $app; 之前添加此行

$app->register(\Lumener\LumenerServiceProvider::class);

Laravel ≤ 5.4

打开您的 config/app.php 并在提供者部分添加此行

Lumener\LumenerServiceProvider::class

Laravel 5.5+

自动包发现应该会添加提供者。

配置

您不需要创建配置文件,因为所有配置参数都有一个回退值。您可以按照以下说明自定义配置。

  • 创建一个 config/lumener.php 文件或使用 php artisan vendor:publish(仅限 Laravel)
  • 对于 Lumen,您还必须在 bootstrap/app.php 中在 return $app; 之前添加以下行
$app->configure('lumener');

Artisan 命令

更新 Adminer

php artisan lumener:update [OPTIONAL --force]

您可以将 composer.json 配置为在每次提交后执行此操作

"scripts": {
    "post-install-cmd": [
        "php artisan lumener:update"
    ],
    "post-update-cmd": [
        "php artisan lumener:update"
    ]
}

您还可以创建一个路由来通过 \Lumener\Controllers\LumenerController@update 动作更新 lumener。

主题

php artisan lumener:stylize [OPTIONAL --file] [OPTIONAL --url]

默认

如果没有提供参数,此命令将安装 Lumener 中已打包的默认主题: Adminer 的 Material Design

php artisan lumener:stylize

alt text

有关更多主题,请参阅 Adminer 网站。

文件

php artisan lumener:stylize --file=/home/Downloads/adminer.css

URL

php artisan lumener:stylize --url=https://raw.githubusercontent.com/vrana/adminer/master/designs/lucas-sandery/adminer.css

对于包含图像/JavaScript 的主题,您必须手动将文件复制到您的 public 路径。

插件

通过其路径或 URL 安装或更新任何 插件

php artisan lumener:plugin [OPTIONAL --file] [OPTIONAL --url]

插件必须在 config('lumener.adminer.plugins.enabled') 中启用。请参阅配置部分。

默认

如果没有提供参数,此命令将安装所需的 plugin.php 文件,该文件是插件运行所必需的。

php artisan lumener:plugin

文件

php artisan lumener:plugin --file=/home/Downloads/designer.php

URL

php artisan lumener:plugin --url=https://raw.github.com/vrana/adminer/master/plugins/database-hide.php

扩展

Adminer 支持 扩展。实际上,Lumener 利用了相当多的扩展函数。然而,可以通过另一个用户定义的类添加更多扩展。这可以在保留原始 Lumener 扩展的同时完成,除非出现冲突。请在编写自己的扩展之前花些时间检查 src/logic/adminer_object,以了解潜在的冲突。

要添加您自己的扩展,请设置 config('lumener.adminer.extension_file')

"adminer" => [
    ...
    "extension_file" => base_path("app/Logic/LumenerExtension.php")
    ...
]

示例文件

<?php
// Lumener and $plugins are already defined before this file is included
class ExtendedLumener extends Lumener
{
    function permanentLogin() {
      // key used for permanent login
      return 'ca41d8e9879df648e9a43cefa97bc12d';
    }
}

if (empty($plugins)) {
    return new ExtendedLumener();
}
return new ExtendedLumener($plugins);

自定义路由

您可以在 config('lumener.route') 中修改路由属性。

Lumen 特殊

您可以将路由添加到自己的路由文件中(例如 routes/web.php),并命名为 lumener,这将覆盖所有属性,除了命名空间。

$router->addRoute(null, 'lumener', ['middleware' => ['auth'], 'as' => 'lumener']);

如果在现有的组内添加路由,这也同样有效。

$router->group(
    ['middleware' => ['encrypt_cookies', 'auth', 'level:100'], 'prefix' => 'admin'],
    function () use ($router) {
        $router->addRoute(null, 'lumener', ['as' => 'lumener']);
    }
);

不支持特定的HTTP方法,请保持其为 null。这里的路由路径和选项将覆盖 config('lumener.route')

Laravel 特殊

您可以定义一个名为 lumener 的中间件组,它将被自动用于 LumenerController

另外,将 lumener 路由添加到 $except 中以避免 CSRF 问题

protected $except = [
     'lumener'
 ];

嵌入

该路由可以被重定向到用户定义控制器中的一个函数。这通过在 config('lumener.route.options.uses') 或用户定义的路由(Lumen)中覆盖 uses 选项来实现。

以下代码是一个关于嵌入如何工作的简单示例。

class AdminController{
   public function __construct(Request $request)
   {
       $this->request = $request;
   }
   public function lumener()
   {
       // If you are using a Content Seucrity Policy, define it here
       define("LUMENER_CSP", [["form-action" => "'self'"]]);
       $controller = new \Lumener\Controllers\LumenerController($this->request);
       $content = $controller->index();
       return view('admin.dashboard', ['content' => $content]);
   }
}
// Don't forget to use {!! $content !!} in blade as $content is HTML

致谢

许可协议

MIT 许可协议 (MIT)。有关更多信息,请参阅 许可文件