shincode / envision
适用于 Laravel 4 的 Envision
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-28 13:57:27 UTC
README
使用 Envision 的目标是加快开发速度。为此,它执行了一些操作
- 即时生成和自动加载 Envision 识别的类。
- 自动使用 Ardent 包。
- 自动使用 Presenter 包。
安装
Envision 依赖于您 Laravel 框架中的 Ardent 和 Presenter 包。因此,请将那些包也添加进去。将 shincode/envision、Ardent 和 Presenter 添加到 composer.json。
"require": {
"laravel/framework": "4.2.*",
"shincode/envision": "dev-master",
"laravelbook/ardent": "2.5.*",
"robclancy/presenter": "1.3.*"
}
使用 composer 更新
composer update
在 app/config/app.php 中添加服务提供者
'Shincode\Envision\EnvisionServiceProvider',
'Robbo\Presenter\PresenterServiceProvider',
复制配置文件
php artisan config:publish shincode/envision
在 app/config/packages/shincode/envision/settings.php 中,将 autoload 和 create 设置为 true 以启用快速开发
'autoload' => true,
'create' => true,
示例
这里有一个简短教程。让我们为数据库创建一个名为 phones 的表。运行以下 artisan 命令
php artisan migrate:make create_phones_table
让我们编辑这个文件(保持简单)
public function up() {
Schema::create('phones', function(Illuminate\Database\Schema\Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
}
运行迁移
php artisan migrate
现在将其添加到 app/routes.php
Route::controller('phone', 'PhoneController');
注意,您尚未创建任何文件,但立即引用了 PhoneController。运行应用程序。您将看到 PhoneController.php 已出现在您的 app/controllers 结构中。
让我们打开这个控制器并添加一个函数
public function getIndex() {
PhoneResource::insert(array('name' => 'Sunkia'));
PhoneResource::insert(array('name' => 'Nosy'));
PhoneResource::insert(array('name' => 'Namnung'));
}
看到了吗?您实际上并没有创建类,只是编写了您想做的事情。首先我们创建了通用的路由方法。现在我们填充了一些数据库,以便我们可以使用它。由于我们创建了一个控制器路由到 'phone',现在我们只需访问 URL /phone,函数就会被执行。当然,我们通常使用种子来完成这个任务,但这样您可以理解创建新条目是多么容易。
下一步是显示它们。让我们看看这是如何工作的。将 getIndex 改为其他内容
public function getIndex() {
$phones = PhoneResource::all();
return View::make('phone')->with('phones', $phones);
}
让我们也创建一个视图文件,并将其保存为 view/phone.blade.php
@foreach($phones as $phone)
<h1>{{ $phone->name }}</h1>
@endforeach
现在打开 URL 到 /phone,您会发现它真的可以工作!
到目前为止,您应该看到了一些新文件被创建。我们使用了 Resource 类、Ardent 类和 Presenter 类。
让我们尝试使用 Presenter 类。在您的应用文件夹中应该有一个新的名为 'presenters' 的文件夹。打开 PhonePresenter.php 并添加以下函数
public function presentFoo() {
return 'bar';
}
现在让我们将 view/phone.blade.php 编辑为以下内容
@foreach($phones as $phone)
<h1>{{ $phone->name }}</h1>
<span>{{ $phone->foo }}</span>
@endforeach
就这样。额外的视图逻辑就在您的指尖。有关 presenter 的更多信息,请参阅此处: https://github.com/robclancy/presenter
Ardent 示例将在以后添加,目前您可以在以下位置了解 ardent: https://github.com/laravelbook/ardent
部署
对于开发,拥有 Envision 真的很不错。但在部署时,强烈建议关闭自动生成。在 app/config/packages/shincode/envision/settings.php(如果您已发布配置)中,您可以更改以下内容
- autoload = 自动尝试查找 Envision 使用的类。可以保留,但会对性能产生影响。对于最终的部署,建议实际上自动加载所有文件并在 app.php 中创建别名。
- 创建 = 当找不到时自动生成类。出于明显的原因,强烈建议在部署时禁用。
- 日志 = 目前没有任何操作。
我建议使用环境。例如,我用本地环境进行开发,并在 app/config/packages/shincode/envision/local/settings.php 中有一个 settings.php 的副本。默认情况下,该包中这两个选项都默认禁用,因此安装后包实际上处于“关闭”状态,出于安全原因。
为 Envision 贡献
所有问题和 pull 请求都应提交到 shincode/envision 仓库。
许可证
Envision 是开源软件,许可协议为 MIT 许可协议