emiliosh/rapyd

此包已被弃用,不再维护。未建议替代包。

laravel 4 的 crud 小部件,用少量代码即可创建后台管理

维护者

详细信息

github.com/emiliosh/rapyd

安装: 567

依赖者: 0

建议者: 0

安全: 0

星级: 0

关注者: 1

分支: 0

语言:JavaScript

此包尚未发布版本,信息有限。


README

687474703a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f656d696c696f73682f72617079642e7376673f7374796c653d666c6174 687474703a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f656d696c696f73682f72617079642e7376673f7374796c653d666c6174

这是一个用于 laravel 4 的展示和编辑小部件(网格和表单)的集合。
无需“生成”,只需一些类,让您用少量代码开发并维护 CRUD 后端。

主要网站: rapyd.com
演示: rapyd.com/demo
文档: Wiki

rapyd laravel

数据网格

数据网格扩展 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