此包最新版本(dev-master)没有提供许可证信息。

dev-master 2014-03-28 14:43 UTC

This package is not auto-updated.

Last update: 2024-09-23 14:02:46 UTC


README

使用此包,您可以

安装

使用[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',
        	    )
        	)
        );
    }
}

管理您的控制器

The resource manager interface

此包包含一个方便的管理界面。它允许您通过简单的表单生成新的crud控制器。您还可以从现有包中复制crud控制器并将其放入应用程序文件夹。这样,您可以对crud控制器有完全的控制,而无需更改原始包。

管理器位于以下URL下

http://{yourdomain}/crud

从那里,您可以生成新的控制器文件或将现有文件从包中转换为控制器。它还会将资源路由添加到您的现有路由中。创建新控制器后,您将立即重定向到您的新资源。只需在控制器中为您FormBuilder实例添加一些字段,您就可以享受这个Crud包的力量了。

您的应用程序

以下是您如何在应用程序中更多地利用Crud包的一些示例。