earlybirdmvp / foundry
一个简单但强大的Laravel CRUD工具
v0.3.0
2014-12-06 05:40 UTC
Requires
- doctrine/dbal: *
- laravel/framework: >=4.2.0
This package is not auto-updated.
Last update: 2024-10-02 06:43:33 UTC
README
轻松在Eloquent模型上执行CRUD任务
这是Laravel资源控制器的一个替代品,资源控制器非常轻量级。
安装
将"earlybirdmvp/foundry"添加到您的composer.json文件中,并运行composer update
。
然后向您的app/start/global.php
文件中添加以下行
View::addLocation(base_path().'/vendor/earlybirdmvp/foundry/views'); View::addNamespace('foundry', base_path().'/vendor/earlybirdmvp/foundry/views');
入门
首先创建您的Foundry模型。
class Product extends Eloquent { use Earlybird\Foundry; }
然后创建一个控制器
class ProductController extends BaseController { use Earlybird\FoundryController; }
最后添加一个路由资源组。请参阅https://laravel.net.cn/docs/controllers#resource-controllers。所有"only"、"except"等选项都可以使用。
Route::resource('product', 'ProductController');
就是这样!
现在您只需要访问URL product
,您将看到所有产品对象的分页列表。有一个按钮可以创建新产品,具有唯一索引的列可以链接到编辑单个资源。
功能
- 与Bootstrap类兼容良好
- 这是一个CMS,而不是数据库管理工具。因此,Eloquent的
$hidden
和$guarded
数组被尊重,不可见或不可编辑。 - 如果列名有注释,则显示注释(可以用于创建用户友好的标签)
- 支持的数据类型
bigint, char, date, decimal, enum, int, text, tinyint, varchar
- 内置验证。
NOT NULL
列被视为“必需”,任何名称中包含“email”的列都必须是有效的电子邮件地址,具有唯一索引的列将被检查 - 验证错误显示在有问题的输入旁边
- 支持非常基本的
belongsTo
关系。列必须以_id
结尾,并且必须与关系的名称具有相同的前缀。例如,如果产品表有一个category_id
列,并且这个Eloquent关系,那么它将工作
class Product extends Eloquent { use Earlybird\Foundry; public function category() { return $this->belongsTo('Category'); } }
- 这些
belongsTo
关系显示为选择下拉列表,其中值是id
,选项文本是name
属性。如果表中没有name
列,或者您想更改显示的内容,可以使用$appends
class Product extends Eloquent { use Earlybird\Foundry; protected $appends = array( 'foundry_value', ); public function getFoundryValueAttribute() { return $this->sku . ': ' . $this->name; } }
选项
控制器
- 使用
protected $model
指定模型。默认是移除"Controller"的类名。 - 使用
protected $per_page
设置每页显示的项目数。默认为10。 - 如果您想检测更新,创建一个
detectChange
函数。这个函数在save()
之前被调用,这样您就可以比较旧值和新值
class OrderController extends BaseController { use Earlybird\FoundryController; public function detectChange() { // Email customer update that order status was changed } }
待办事项
- 对索引页进行排序和筛选
- 支持更多数据类型
- 改进日期验证
- 改进对关系的支持
- 删除资源
- 批量更新和删除
- 更灵活的布局