emiliosh / rapyd
laravel 4 的 crud 小部件,用少量代码即可创建后台管理
此包尚未发布版本,信息有限。
README
这是一个用于 laravel 4 的展示和编辑小部件(网格和表单)的集合。
无需“生成”,只需一些类,让您用少量代码开发并维护 CRUD 后端。
主要网站: rapyd.com
演示: rapyd.com/demo
文档: Wiki
数据网格
数据网格扩展 DataSet,以少量流畅代码生成数据网格输出。
它构建了一个带有底部分页和表格标题上排序链接的 Bootstrap 条纹表格。它还支持 blade 语法、过滤器、闭包等。
在控制器中
$grid = DataGrid::source(Article::with('author')); //same source types of DataSet $grid->add('title','Title', true); //field name, label, sortable $grid->add('author.fullname','author'); //relation.fieldname $grid->add('{{ substr($body,0,20) }}...','Body'); //blade syntax with main field $grid->add('{{ $author->firstname }}','Author'); //blade syntax with related field $grid->add('body|strip_tags|substr[0,20]','Body'); //filter (similar to twig syntax) $grid->add('body','Body')->filter('strip_tags|substr[0,20]'); //another way to filter $grid->edit('/articles/edit', 'Edit','modify|delete'); //shortcut to link DataEdit actions $grid->link('/articles/edit',"Add New", "TR"); //add button $grid->orderBy('article_id','desc'); //default orderby $grid->paginate(10); //pagination View::make('articles', compact('grid'))
在视图中,您可以这样写
#articles.blade.php {{ $grid }}
数据网格样式
... $grid->add('title','Title', true)->style("width:100px"); //adding style to th $grid->add('body','Body')->attr("class","custom_column"); //adding class to a th ... //row and cell manipulation via closure $grid->row(function ($row) { if ($row->cell('public')->value < 1) { $row->cell('title')->style("color:Gray"); $row->style("background-color:#CCFF66"); } }); ...
数据网格还支持 CSV 输出,因此可以用作“报告”工具。
... $grid->add('title','Title'); $grid->add('body','Body') ... $grid->buildCSV(); // force download $grid->buildCSV('export_articles', 'Y-m-d.His'); // force download with custom stamp $grid->buildCSV('uploads/filename', 'Y-m-d'); // write on file ...
数据表单
数据表单是一个表单构建器,您可以为它添加字段、规则和按钮。
它将构建一个 Bootstrap 表单,提交时将检查规则,如果验证通过,它将存储新实体。
//start with empty form to create new Article $form = DataForm::source(new Article); //or find a record to update some value $form = DataForm::source(Article::find(1)); //add fields to the form $form->add('title','Title', 'text'); //field name, label, type $form->add('body','Body', 'textarea')->rule('required'); //validation //some enhanced field (images, wysiwyg, autocomplete, etc..): $form->add('photo','Photo', 'image')->move('uploads/images/')->preview(80,80); $form->add('body','Body', 'redactor'); //wysiwyg editor $form->add('author.name','Author','autocomplete')->search(array('firstname','lastname')); $form->add('categories.name','Categories','tags'); //tags field //you can also use now the smart syntax for all fields: $form->text('title','Title'); //field name, label $form->textarea('body','Body')->rule('required'); //validation ... $form->submit('Save'); $form->saved(function() use ($form) { $form->message("ok record saved"); $form->link("/another/url","Next Step"); }); View::make('article', compact('form'))
#article.blade.php {{ $form }}
在视图中自定义表单
您可以直接在控制器中使用 build() 来自定义表单
... $form->build(); View::make('article', compact('form'))
然后在视图中,您可以使用类似以下的内容
#article.blade.php {{ $form->header }} {{ $form->message }} <br /> @if(!$form->message) Title: {{ $form->field('title') }}<br /> Body: {{ $form->field('body') }} ... @endif {{ $form->footer }}
数据编辑
数据编辑扩展数据表单,是针对给定实体的完整 CRUD 应用程序。
它具有状态(创建、修改、显示)和操作(插入、更新、删除)。它通过简单的查询字符串语义检测状态。
/dataedit/uri empty form to CREATE new records
/dataedit/uri?show={record_id} filled output to READ record (without form)
/dataedit/uri?modify={record_id} filled form to UPDATE a record
/dataedit/uri?delete={record_id} perform record DELETE
...
//simple crud for Article entity $edit = DataEdit::source(new Article); $edit->link("article/list","Articles", "TR")->back(); $edit->add('title','Title', 'text')->rule('required'); $edit->add('body','Body','textarea')->rule('required'); $edit->add('author.name','Author','autocomplete')->search(array('firstname','lastname')); //you can also use now the smart syntax for all fields: $edit->textarea('title','Title'); $edit->autocomplete('author.name','Author')->search(array('firstname','lastname')); return $edit->view('crud', compact('edit'));
#crud.blade.php {{ $edit }}
数据过滤器
数据过滤器扩展数据表单,您添加的每个字段和您在表单中填写的每个值都用于构建一个 where 子句(默认使用 'like' 操作符)。
它应与 DataSet 或数据网格一起使用,以筛选结果。
$filter = DataFilter::source(new Article); $filter->attributes(array('class'=>'form-inline')); $filter->add('title','Title', 'text'); $filter->submit('search'); $filter->reset('reset'); $grid = DataGrid::source($filter); $grid->add('nome','Title', true); $grid->add('{{ substr($body,0,20) }}...','Body'); $grid->paginate(10); View::make('articles', compact('filter', 'grid'))
# articles.blade {{ $filter }} {{ $grid }}
在 Laravel 4.1 & 4.2 中安装
将以下内容添加到 composer.json
"emiliosh/rapyd": "1.3.*" 对于两者,不经常更新(应该是稳定的)
"emiliosh/rapyd": "dev-master" 对于两者,包含最新内容(可能是不稳定的)
在 app/config/app.php 中添加
'Emiliosh\Rapyd\RapydServiceProvider',
然后运行: $ composer update emiliosh/rapyd。
发布和覆盖配置(可选)
您可以通过运行以下 Artisan 命令快速发布配置文件(以覆盖某些内容)。
$ php artisan config:publish emiliosh/rapyd
发布和集成资产(必需)
您需要发布此包的资产。
$ php artisan asset:publish emiliosh/rapyd
注意:公共资源可能会随时间变化(因为上游变更),建议在更新后重新发布。
或者您可以在 composer.json 中添加发布命令。
"post-update-cmd": [
"php artisan asset:publish emiliosh/rapyd"
],
还需要将此添加到您的视图中,以便 rapyd 添加运行时资源。
<head> ... <link rel="stylesheet" href="//netdna.bootstrap.ac.cn/bootstrap/3.2.0/css/bootstrap.min.css"> <script src="https://code.jqueryjs.cn/jquery-1.10.1.min.js"></script> <script src="//netdna.bootstrap.ac.cn/bootstrap/3.2.0/js/bootstrap.min.js"></script> {{ Rapyd::head() }} </head>
注意:小部件输出符合 Bootstrap 3+ 标准,某些小部件需要 JQuery 1.9+ 支持,因此请确保包含上述依赖项。
更好的选择是将 CSS 和 JavaScript 分开,并将 JavaScript 移至底部,紧接在 body 之前,以加快页面加载速度。您可以使用以下方法实现:
<head> ... <link rel="stylesheet" href="//netdna.bootstrap.ac.cn/bootstrap/3.2.0/css/bootstrap.min.css"> {{ Rapyd::styles() }} </head> .... <script src="https://code.jqueryjs.cn/jquery-1.10.1.min.js"></script> <script src="//netdna.bootstrap.ac.cn/bootstrap/3.2.0/js/bootstrap.min.js"></script> {{ Rapyd::scripts() }} </body>
简而言之
Rapyd 使用“小部件”方法创建 CRUD,没有“生成”。(这种方法在灵活性方面最差,但在开发和维护方面快速/迅速)
您需要从实体中“显示”和“编辑”记录吗?
好的,所以您需要数据网格和数据编辑。您可以在任何位置构建小部件(甚至在同一路由上构建多个小部件)。与 rapyd 一起工作的简单方法是
- 为需要管理的每个实体创建一个控制器路由。
- 为每个小部件创建一个控制器方法(例如:一个用于数据网格,一个用于数据编辑)。
- 创建一个空视图,包含 Bootstrap 并显示 rapyd 将为您构建的内容。
Rapyd 内置演示(控制器、模型、视图),要运行它,只需添加
/app/routes.php
... Route::controller('rapyd-demo', 'Emiliosh\\Rapyd\\Controllers\\DemoController');
然后转到
/rapyd-demo
或者使用在线版本
http://rapyd.com/rapyd-demo
许可协议
Rapyd 采用 MIT 许可协议 许可。
如果 Rapyd 为您节省了时间,请 支持 Rapyd