earlybirdmvp/foundry

一个简单但强大的Laravel CRUD工具

v0.3.0 2014-12-06 05:40 UTC

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
    }
}

待办事项

  • 对索引页进行排序和筛选
  • 支持更多数据类型
  • 改进日期验证
  • 改进对关系的支持
  • 删除资源
  • 批量更新和删除
  • 更灵活的布局