lukesnowden / laraview
为 Laravel 应用生成视图
Requires
- php: >=7.0.0
- fzaninotto/faker: *
- laravel/framework: >=5.2
Requires (Dev)
- filp/whoops: >=1.0
- phpunit/phpunit: ~4.0
- dev-master
- v0.0.40
- v0.0.39
- v0.0.38
- v0.0.37
- v0.0.36
- v0.0.35
- v0.0.34
- v0.0.33
- v0.0.32
- v0.0.31
- v0.0.30
- v0.0.29
- v0.0.28
- v0.0.27
- v0.0.26
- v0.0.25
- v0.0.24
- v0.0.23
- v0.0.22
- v0.0.21
- v0.0.20
- v0.0.19
- v0.0.18
- v0.0.17
- v0.0.16
- v0.0.15
- v0.0.14
- v0.0.13
- v0.0.12
- v0.0.11
- v0.0.10
- v0.0.9
- v0.0.8
- v0.0.7
- v0.0.6
- v0.0.5
- v0.0.4
- v0.0.3
- v0.0.2
- v0.0.1
This package is auto-updated.
Last update: 2024-08-29 05:06:13 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
现在,已经创建了一个名为 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_COLUMN
和 RIGHT_COLUMN
;
php artisan laraview:region
现在您将在 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
现在让我们向 左侧列
添加一些输入元素,如名和姓。
现在让我们将这些 元素
注册到 区域
上。
<?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 文件。
如果您现在打开生成的文件,应该会看到这个;
@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 类别。
我们可以通过监听区域附加时,然后使用 insertElement
、insertElementBefore
或 insertElementAfter
方法插入我们的元素来实现。
MIT 许可证
版权所有 (c) 2018 Luke Snowden
特此授予任何人免费获得此软件及其相关文档文件(“软件”)副本的权限,无限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向软件提供者提供软件的人这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“现状”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定用途的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权诉讼或其他诉讼中,这些索赔、损害或其他责任源于、产生于或与软件或其使用或其它交易有关。