hgists / lumener
Adminer/Adminer Editor for Lumen/Laravel 5.*
Requires
- php: >=5.5.0
- guzzlehttp/guzzle: >=6.0
- illuminate/console: >=5.0
- illuminate/encryption: >=5.0
- illuminate/http: >=5.0
- illuminate/routing: >=5.0
- ralouphie/mimey: >=2.1
Suggests
- illuminate/cookie: Suggested for Lumen
- illuminate/session: Suggested for Lumen
This package is auto-updated.
Last update: 2024-09-04 09:40:50 UTC
README
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
有关更多主题,请参阅 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)。有关更多信息,请参阅 许可文件。