lukesnowden / laraview

为 Laravel 应用生成视图

安装: 593

依赖项: 2

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:项目

v0.0.40 2019-01-31 16:09 UTC

README

安装

您可以通过 Composer 安装此包

composer require lukesnowden/laraview

接下来,您必须将服务提供者安装到 config/app.php

'providers' => [
    // ...
    Laraview\Providers\AppServiceProvider::class
];

最后,运行以下命令以生成您的视图文件

php artisan laraview:compile

演示

https://github.com/lukesnowden/customer-views 可以找到演示。只需下载包,包含服务提供者并编译视图。

教程

我想提供一个教程,演示如何在生产应用中使用此包。

让我们假设我们有一个管理面板,其中有一个用户部分,您可以编辑用户的详细信息。让我们创建这个视图

视图生成器

php artisan laraview:view

ViewCommand

现在,已经创建了一个名为 View 的占位符,并位于 app/Laraview/CustomerEdit/。我们现在可以注册这个 View,建议创建一个新的服务提供者以保持代码整洁

php artisan make:provider ViewServiceProvider

将此新提供者添加到 config/app.php

在视图服务提供者的启动方法中,使用 Register 对象注册新的 View;

<?php

namespace App\Providers;

use App\Laraview\CustomerEdit\CustomerEditView;
use Illuminate\Support\ServiceProvider;
use Laraview\Libs\Blueprints\RegisterBlueprint;

class ViewServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        $this->app->booted( function( $app ) {
            $app[ RegisterBlueprint::class ]->attachView( new CustomerEditView );
        });
    }

}

除了占位符,还创建了一个 template.blade.php 文件,用于结构化您的 区域。让我们稍作修改以包含两个区域,左侧列右侧列。我们可以使用 占位符 定义这些

@extends( 'app' )

@section( 'main' )
    <div class="container">
        <div class="row">
            <div class="left-column col-8">
                [LEFT_COLUMN]
            </div>
            <div class="right-column col-4">
                [RIGHT_COLUMN]
            </div>
        </div>
    </div>
@endsection

区域生成器

现在我们已经设置了视图,让我们创建两个新的 区域LEFT_COLUMNRIGHT_COLUMN;

php artisan laraview:region

ViewCommand

现在您将在 app/Laraview/CustomerEdit/Regions 中生成两个额外的文件。让我们将这些区域注册到我们的 视图 上。

<?php

namespace App\Laraview\CustomerEdit;

use App\Laraview\CustomerEdit\Regions\LeftColumnRegion;
use App\Laraview\CustomerEdit\Regions\RightColumnRegion;
use Laraview\Libs\Blueprints\ViewBlueprint;
use Laraview\Libs\BaseView;

class CustomerEditView extends BaseView implements ViewBlueprint
{

    /**
     * @var string
     */
    protected $path = 'customers.edit';

    /**
     * @var string
     */
    protected $baseViewPath = 'template.blade.php';

    /**
     * Regions to attach to this view
     * @var array
     */
    protected $regions = [
        LeftColumnRegion::class,
        RightColumnRegion::class
    ];

}

元素生成器

php artisan laraview:element

现在让我们向 左侧列 添加一些输入元素,如名和姓。

ViewCommand

现在让我们将这些 元素 注册到 区域 上。

<?php

namespace App\Laraview\CustomerEdit\Regions;

use App\Laraview\CustomerEdit\Regions\LeftColum\Elements\ForenameTextElement;
use App\Laraview\CustomerEdit\Regions\LeftColum\Elements\SurnameTextElement;
use Laraview\Libs\Blueprints\RegionBlueprint;
use Laraview\Libs\BaseRegion;

class LeftColumnRegion extends BaseRegion implements RegionBlueprint
{

    /**
     * @var string
     */
    protected $placeholder = '[LEFT_COLUMN]';

    /**
     * @var array
     */
    protected $elements = [
        ForenameTextElement::class,
        SurnameTextElement::class
    ];

}

现在我们只需要将所有内容编译成 blade 文件。

ViewCommand

如果您现在打开生成的文件,应该会看到这个;

@extends( 'app' ) 
@section( 'main' )
<div class="container">
	<div class="left-column col-8">
		<div class="form-group">
			<label for="forename-input">Forename</label>
			<input name="forename" id="forename-input" placeholder="John..." class="form-control" value="{{ old('forename') }}" />
		</div>
		<div class="form-group">
			<label for="surname">Surname</label>
			<input name="surname" id="surname" class="form-control" value="{{ old('surname') }}" />
		</div>
	</div>
	<div class="right-column col-4">
	</div>
</div>
@endsection

连接到外部区域

如果您像我们一样,喜欢将应用程序拆分为模块,有时一个模块可能会干扰其他区域。

例如,创建一个名为 Google Shopping Feed 的模块,我们想在产品编辑视图中添加一个复选框和下拉列表,以表示该产品将被添加以及要添加到哪个 Google Shopping 类别。

我们可以通过监听区域附加时,然后使用 insertElementinsertElementBeforeinsertElementAfter 方法插入我们的元素来实现。

MIT 许可证

版权所有 (c) 2018 Luke Snowden

特此授予任何人免费获得此软件及其相关文档文件(“软件”)副本的权限,无限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向软件提供者提供软件的人这样做,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“现状”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定用途的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权诉讼或其他诉讼中,这些索赔、损害或其他责任源于、产生于或与软件或其使用或其它交易有关。