boyhagemann / crud
Requires
- php: >=5.3.0
- boyhagemann/form: dev-master
- boyhagemann/model: dev-master
- boyhagemann/overview: dev-master
- illuminate/support: 4.x
- zendframework/zend-code: 2.x
This package is not auto-updated.
Last update: 2024-09-23 14:02:46 UTC
README
使用此包,您可以
- 使用[表单构建器](http://github.com/boyhagemann/Form)动态构建表单,并使该表单反映您的模型。
- 使用[模型构建器](http://github.com/boyhagemann/Model)通过您的表单生成Eloquent模型。
- 使用[概览构建器](http://github.com/boyhagemann/Overview)为您的模型提供一个管理界面。
- 将资源路由指向CrudController实例,您就可以开始使用了!
- 使用包含管理UI的include Manager UI为您创建骨架控制器。
安装
使用[Composer](https://getcomposer.org.cn)将包安装到您的应用程序中
require { "boyhagemann/crud": "dev-master" }
然后在app/config/app.php中添加以下行
... "Boyhagemann\Crud\CrudServiceProvider" ...
示例用法
首先,我们需要创建一个继承自CrudController的控制器。这个CrudController期望实现3个方法,如下面的例子所示。
我假设您在app/config/database.php文件中有一个正在工作的数据库连接。否则,不会有任何魔法!
<?php use Boyhagemann\Crud\CrudController; use Boyhagemann\Form\FormBuilder; use Boyhagemann\Model\ModelBuilder; use Boyhagemann\Overview\OverviewBuilder; class NewsController extends CrudController { public function buildForm(FormBuilder $fb) { $fb->text('title')->label('Title')->rules('required|alpha'); $fb->textarea('body')->label('Body'); $fb->radio('online')->choices(array('no', 'yes'))->label('Show online?'); $fb->modelSelect('category_id') ->model('Category') ->label('Choose a category'); } public function buildModel(ModelBuilder $mb) { $mb->name('Article') $mb->table('articles'); $mb->autoGenerate(); } public function buildOverview(OverviewBuilder $ob) { $ob->fields(array('title', 'body'); $ob->order('title'); } }
创建您的控制器后,只需创建一个指向您的控制器的资源路由。
Route::resource('admin/news', 'NewsController');
这就完成了。打开您的浏览器,输入您刚才创建的路由。
自动生成模型
您可能已经注意到,您的Eloquent模型还不存在。那么这个宝贝是如何工作的呢?问得好。这个包会检查IoC容器中是否存在模型。如果不存在,那么会写入Eloquent模型文件并创建数据库表。
class My\Fancy\ArticleController extends CrudController { public function buildModel(ModelBuilder $mb) { $mb->autoGenerate(); } }
如果您的数据库表已经存在,它将只添加非现有列。如果您不想生成或更新数据库表,只需从modelBuilder实例中删除此行。您也可以将false作为autoGenerate方法的参数。
视图模式
有时您想在创建或编辑时拥有一个略微不同的表单。这可以通过一些辅助方法来解决
- isOverview
- isCreate
- isEdit
- isDelete
public function buildForm(FormBuilder $fb) { $title = $fb->text('title')->label('My title'); if($this->isOverview()) { $title->label('Changed label in the overview'); } }
更改配置文件
您可以使用简单的配置数组来编辑每个crud控制器的多个选项。一种方法是覆盖控制器中的config()方法。它只需要返回一个具有正确格式的数组。该格式在方法的注释中有解释。
class My\Fancy\ArticleController extends CrudController { public function config() { return array( 'view' => array( 'index' => 'crud::crud.index', 'create' => 'crud::crud.create', 'edit' => 'crud::crud.edit', ), 'redirects' => array( 'success' => array( 'store' => 'admin.article.index', 'update' => 'admin.article.index', 'delete' => 'admin.article.index', ), 'error' => array( 'store' => 'admin.article.create', 'update' => 'admin.article.edit', 'delete' => 'admin.article.index', ) ) ); } }
管理您的控制器
此包包含一个方便的管理界面。它允许您通过简单的表单生成新的crud控制器。您还可以从现有包中复制crud控制器并将其放入应用程序文件夹。这样,您可以对crud控制器有完全的控制,而无需更改原始包。
管理器位于以下URL下
http://{yourdomain}/crud
从那里,您可以生成新的控制器文件或将现有文件从包中转换为控制器。它还会将资源路由添加到您的现有路由中。创建新控制器后,您将立即重定向到您的新资源。只需在控制器中为您FormBuilder实例添加一些字段,您就可以享受这个Crud包的力量了。
您的应用程序
以下是您如何在应用程序中更多地利用Crud包的一些示例。
- [通知用户添加一些表单元素] (https://gist.github.com/boyhagemann/6822421)
- [如何将布局添加到您的包中] (https://gist.github.com/boyhagemann/6822567)
- [快速将菜单添加到您的布局中] (https://gist.github.com/boyhagemann/6822661)