ilgala/laravel-wizzy

此包已被放弃且不再维护。未建议替代包。

Laravel 安装向导

安装: 19

依赖者: 0

建议者: 0

安全: 0

星标: 1

关注者: 0

分支: 0

语言:JavaScript

类型:

0.1.0-alpha 2016-08-29 17:47 UTC

This package is not auto-updated.

Last update: 2020-01-24 16:23:24 UTC


README

Laravel-wizzy 由 Filippo Galante 创建并维护,是一个可配置的 Laravel 安装向导,允许用户检查系统需求、设置环境和运行数据库迁移和种子。您可以自由查看 变更日志发布许可协议贡献指南

StyleCI Latest Stable Version Total Downloads Latest Unstable Version License

安装

要求

  • 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阶段刚刚开始... 我正在寻找问题...