ilgala / laravel-wizzy
Laravel 安装向导
Requires
- php: >=5.5.9
- laravel/framework: 5.*
Requires (Dev)
- php: >=5.5.9
- laravel/framework: 5.*
This package is not auto-updated.
Last update: 2020-01-24 16:23:24 UTC
README
Laravel-wizzy 由 Filippo Galante 创建并维护,是一个可配置的 Laravel 安装向导,允许用户检查系统需求、设置环境和运行数据库迁移和种子。您可以自由查看 变更日志、发布、许可协议 和 贡献指南。
安装
要求
- PHP 5.5+
- Laravel
要获取 Laravel Wizzy 的最新版本,只需使用 Composer 需求此项目
$ composer require ilgala/laravel-wizzy:dev-master
当然,您也可以手动更新 require 块并运行 composer update
{ "require": { "ilgala/laravel-wizzy": "dev-master" } }
一旦安装了 Laravel Wizzy,您需要注册服务提供者。打开 config/app.php
并将以下内容添加到 providers
键。
IlGala\LaravelWizzy\WizzyServiceProvider::class
您可以在 config/app.php
文件的 aliases
键中注册 Wizzy 门面。
'Wizzy' => 'IlGala\LaravelWizzy\Facades\Wizzy'
配置
Laravel Wizzy 支持可选配置。
要开始,您需要发布所有供应商资产
$ php artisan vendor:publish
这将在您的应用中创建一个 config/wizzy.php
文件,您可以根据需要进行修改以设置配置。 publish 命令还将复制包的视图和 public/assets
文件夹。此外,请确保检查此包中原始配置文件在版本之间的更改。
有几个配置选项
Wizzy 启用标志
此选项指定了 Wizzy 是否启用,并且只有当 .env 文件不包含任何 WIZZY_ENABLED 键时才会考虑。
Default: true
应用程序系统要求
这一组选项指定了 PHP 和文件系统权限的应用程序要求。对于向导来说,只有所需的 PHP 版本是强制性的。
Default values
'php' => [
'required' => 'x.x.x', // Default: laravel required version
'preferred' => 'x.x.x', // Default: laravel required version
],
'php_extensions' => [ // Default: laravel required extensions
'OpenSSL',
'PDO',
'Mbstring',
'Tokenizer',
],
'permissions' => [ // Default: laravel filesystem permissions
'storage/app/' => '775',
'storage/framework/' => '775',
'storage/logs/' => '775',
'bootstrap/cache/' => '775',
],
],
Wizzy 步骤
这一组选项指定了是否在向导中启用环境视图和数据库视图。如果参数设置为 false,则向导将跳过一个或两个步骤。
environment default: true
database default: true
Wizzy 路由前缀
此选项指定了 Wizzy 的路由分组前缀,以避免与应用程序的其他路由冲突。
Default: install
环境文件名
用于解析环境变量的应用程序环境文件。
Default: .env
迁移路径
迁移文件的路径。
Default: database/migrations
强制标志
如果此选项设置为true,则迁移命令将以--force属性运行。
Default: false
结论脚本
这组选项包含在向导最后一步将运行的所有Artisan脚本。
默认运行的脚本包括
- clear-compiled: 删除编译的类文件
- optimize: 优化框架以获得更好的性能
- config:clear: 删除配置缓存文件
- config:cache: 创建缓存文件以加快配置加载
有关Artisan命令的更多信息,请参阅官方文档。
重定向到
这是应用程序安装过程完成后用于重定向用户的URL。
Default: /
用法
Facades\Wizzy
此外观将动态地将静态方法调用传递给ioc容器中的'wizzy'对象,默认情况下是IlGala\LaravelWizzy\Wizzy
类。此外观也可以用于自定义向导创建。声明的方 法可以用作创建环境文件、运行数据库迁移或Artisan命令的帮助函数。
/**
* Get wizzy route group prefix from the config file.
*
* @return string wizzy.prefix
*/
Wizzy::getPrefix();
/**
* Get wizzy default evnironment filename from the config file.
*
* @return string wizzy.environment
*/
Wizzy::getDefaultEnv();
/**
* Get wizzy conclusion view redirect url from the config file.
*
* @return string wizzy.redirectTo
*/
Wizzy::getRedirectUrl();
/**
* Check if wizzy is enabled from the config file.
*
* @return bool true|false
*/
Wizzy::isWizzyEnabled();
/**
* Check if wizzy environment step is enabled from the config file.
*
* @return string wizzy.steps.environment
*/
Wizzy::isEnvironmentStepEnabled();
/**
* Check if wizzy database step is enabled from the config file.
*
* @return string wizzy.steps.database
*/
Wizzy::isDatabaseStepEnabled();
/**
* Stores the $variables array as an environment file. If the $wizzy_enabled
* variable is true, then it will add WIZZY_ENABLED=false variable in the
* .env file.
*
* @param string $filename
* @param string $variables
* @param boolean $wizzy_enabled
* @return string filename
*/
Wizzy::($filename, $variables, $wizzy_enabled = false);
/**
* Runs the artisan 'migrate' command.
*
* @param string $path
* @param boolean $refresh_database
* @param boolean $seed_database
*/
Wizzy::runMigration($path, $refresh_database, $seed_database);
/**
* Retrieve all the migration files in the given path.
*
* @param type $path
* @return array
*/
Wizzy::getMigrationsList($path);
/**
* Runs an artisan command.
*
* @param type $command
* @param type $attributes
* @return void
*/
Wizzy::artisanCall($command, $attributes = []);
WizzyServiceProvider
此类不包含任何有意义的公共方法。应在config/app.php
中的提供者数组中添加此类。此类将设置ioc绑定。
WizzyMiddleware
Wizzy包含一个用于将应用程序路由重定向到安装向导的中间件。要启用重定向,您必须在app/Http/Kernel.php文件中将中间件注册为全局,如下所示
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
// Other middlewares
// Register laravel wizzy as global middleware
\IlGala\LaravelWizzy\Middleware\WizzyMiddleware::class,
],
'api' => [
'throttle:60,1',
],
];
否则,您可以注册中间件为单独的,并选择您的应用程序中哪些路由可以运行向导。
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
// Other middlewares
// Register laravel wizzy as individual middleware
'wizzy' => \IlGala\LaravelWizzy\Middleware\WizzyMiddleware::class,
];
}
WizzyController和WizzyInterface
可以使用WizzyInterface
创建一个CustomWizardController
,该控制器可以被jQueryPlugin的ajax调用调用。
routes.php
Route::group(['prefix' => Wizzy::getPrefix(), 'namespace' => 'IlGala\LaravelWizzy', 'middleware' => 'web'], function () {
Route::get('wizzy', ['as' => Wizzy::getPrefix() . '.wizzy', 'uses' => 'WizzyController@index']);
Route::get('environment', ['as' => Wizzy::getPrefix() . '.environment', 'uses' => 'WizzyController@environment']);
Route::get('database', ['as' => Wizzy::getPrefix() . '.database', 'uses' => 'WizzyController@database']);
Route::get('conclusion', ['as' => Wizzy::getPrefix() . '.conclusion', 'uses' => 'WizzyController@conclusion']);
Route::post('execute', ['as' => Wizzy::getPrefix() . '.execute', 'uses' => 'WizzyController@execute']);
});
index(Request $request)
此方法在创建第一个向导步骤时调用。对于jQuery插件所需的输出
-
版本
:array [ 'required' => true|false, 'preferred' => true|false, 'version' => current_version|preferred_version|empty string ];
-
扩展
:array [ 'ext1' => false|ext1 version, 'ext2' => false|ext2 version, 'ext3' => false|ext3 version, [...] ];
-
nextEnabled
:true|false
environment(Request $request)
此方法在创建环境向导步骤时调用。对于jQuery插件所需的输出
文件名
:string
环境变量
:array [ 'key' => 'variable value', 'key' => 'variable value', 'key' => 'variable value', 'key' => 'variable value', ];
database(Request $request)
此方法在创建数据库向导步骤时调用。对于jQuery插件所需的输出
迁移
:array [ 'migration name or migration filename', 'migration name or migration filename', 'migration name or migration filename', 'migration name or migration filename', ];
conclusion(Request $request)
此方法在创建结论向导步骤时调用。jQuery插件不需要任何输出。
execute(Request $request)
此方法从Wizzy jQuery插件调用,以存储环境变量并运行数据库迁移。ajax调用数据对象包含以下键
- 环境
data = { view: 'environment', filename: 'filename', <-- default .env variables: 'key:value|key:value|key:value' <-- default pattern };
- 环境
data = { view: 'database', refresh: true|false, <-- use to run migrate:refresh command seed: true|false, <-- migrate:refresh --seed };
视图
本包由三个视图组成
index.blade.php
:此视图与使用make:auth
命令生成的默认视图结构相同。confirm_environment.blade.php
:环境变量确认模态框。confirm_database.blade.php
:数据库迁移开始模态框。
包的视图存储在resources/views/vendor/wizzy
。
Wizzy 插件
前端 jQuery 插件是使用来自jQuery 模板的多个模式创建的。插件将初始化向导,管理步骤之间的导航,并使用 $.ajax
调用调用后端。
插件存储在 public/assets/js/wizzy
文件夹中
public/assets/js/wizzy
|-- css <-- Plugin css folder
| |-- wizzy.css
|-- i18n <-- Plugin locale folder
| |-- en.js
| |-- it.js
| |-- [...]
|-- wizzy.js <-- This is the plugin
插件初始化
// Remember to include the scripts and the locale strings
<script src="/assets/js/wizzy/wizzy.js"></script>
<script src="/assets/js/wizzy/i18n/en.js"></script>
// Initialization
<script>
$(document).ready(function () {
$('#wizzy').wizzy({
environment: {{ Wizzy::isEnvironmentStepEnabled() }},
database: {{ Wizzy::isDatabaseStepEnabled() }},
redirectUrl: "{{ Wizzy::getRedirectUrl() }}",
welcomeRoute: "{{ route(Wizzy::getPrefix() . '.wizzy') }}",
environmentRoute: "{{ route(Wizzy::getPrefix() . '.environment') }}",
databaseRoute: "{{ route(Wizzy::getPrefix() . '.database') }}",
conclusionRoute: "{{ route(Wizzy::getPrefix() . '.conclusion') }}",
executeRoute: "{{ route(Wizzy::getPrefix() . '.execute') }}",
});
});
</script>
插件选项
选项 | 默认值 | 描述 |
---|---|---|
environment | false | 启用/禁用环境步骤 |
database | false | 启用/禁用数据库步骤 |
redirectUrl | / | 结论步骤重定向 URL |
welcomeRoute | - | 用于填充欢迎视图的 GET ajax 调用 |
environmentRoute | - | 用于填充环境视图的 GET ajax 调用 |
databaseRoute | - | 用于填充数据库视图的 GET ajax 调用 |
conclusionRoute | - | 用于填充结论视图的 GET ajax 调用 |
executeRoute | - | 用于存储环境变量和运行数据库迁移的 POST ajax 调用 |
插件回调
回调 | 默认值 | 输入 | 描述 |
---|---|---|---|
beforeRenderCallback | - | 容器,视图 | 每次显示新视图时都会调用,但容器仍然为空或已清除上一个视图元素 |
afterRenderCallback | - | 容器,视图 | 在创建新视图内容后调用 |
navigationCallback | - | 按钮,视图 | 在点击视图导航按钮时调用,无论如何都在 beforeRenderCallback 之前 |
previousCallback | - | 按钮,视图 | 在点击上一个按钮时调用,无论如何都在 beforeRenderCallback 之前 |
nextCallback | - | 按钮,视图 | 在点击上一个按钮时调用,无论如何都在 beforeRenderCallback 或存储ajax调用之前 |
conclusionCallback | - | 按钮,视图 | 在点击上一个按钮时调用,无论如何都在 beforeRenderCallback 之前 |
undoCallback | - | 按钮,模态框 | 在点击撤销模态框按钮时调用 |
environmentCallback | - | 按钮,模态框,数据 | 环境提交按钮 onClick 事件,如果返回 false,则不会执行任何ajax调用 |
environmentCallback | - | 按钮,模态框,数据 | 数据库提交按钮 onClick 事件,如果返回 false,则不会执行任何ajax调用 |
插件方法
插件有以下公共方法可以调用
$('.wizzy').wizzy('publicMethod', ...);
方法 | 输入 | 描述 |
---|---|---|
renderContent | 容器,视图,beforeRenderCallback,afterRenderCallback | 此方法渲染向导视图之一。容器必须是 jQuery 对象(例如 $('<div />') ),视图是整数(1 => 欢迎页,2 => 环境、数据库或结论,3 => 数据库或结论,4: 结论)。 |
i18n
翻译文件位于 assets/js/wizzy/i18n
。向导已翻译成以下语言
- EN: 英语
- IT: 意大利语
如果您的语言缺失,请提交问题或创建拉取请求!
示例
在这里,您可以查看一些自定义向导的示例。
回调示例
// Remember to include the scripts and the locale strings
<script src="/assets/js/wizzy/wizzy.js"></script>
<script src="/assets/js/wizzy/i18n/en.js"></script>
// Initialization
<script>
$(document).ready(function () {
$('#wizzy').wizzy({
beforeRenderCallback: function(container, view) {
console.log(container); // jQuery object
console.log(view); // 1, 2, 3, 4
},
afterRenderCallback: function(container, view) {
console.log(container); // jQuery object
console.log(view); // 1, 2, 3, 4
},
navigationCallback: function(button, view) {
console.log(button); // jQuery object
console.log(view); // jQuery object
},
previousCallback: function(button, view) {
console.log(button); // jQuery object
console.log(view); // jQuery object
},
nextCallback: function(button, view) {
console.log(button); // jQuery object
console.log(view); // jQuery object
},
conclusionCallback: function(button, view) {
console.log(button); // jQuery object
console.log(view); // jQuery object
},
undoCallback: function(button, modal) {
console.log(button); // jQuery object
console.log(modal); // jQuery object
},
environmentRoute: function(container, view, data) {
console.log(button); // jQuery object
console.log(view); // jQuery object
console.log(data); // jQuery object
return true; // Ajax call will be performed,
},
environmentRoute: function(container, view, data) {
console.log(button); // jQuery object
console.log(view); // jQuery object
console.log(data); // jQuery object
return false; // Ajax call won't be performed,
},
});
});
</script>
控制器示例
COMING SOON
许可证
Laravel Wizzy遵循MIT许可证(MIT)。
已知问题
- alpha阶段刚刚开始... 我正在寻找问题...