malukenho/silex-manager

使用Silex创建简单的CRUD应用脚手架

dev-master 2016-05-22 03:53 UTC

This package is auto-updated.

Last update: 2024-09-20 23:54:10 UTC


README

Build Status

Silex Manager是一种简单的方法来创建CRUD应用。我们知道基于CRUD的应用很糟糕,但有时它是必需的。

现在您可以在几分钟内创建糟糕的应用程序

Silex Manager

作者

安装

您必须将 minimum-stability 设置为 dev,然后运行

$ composer require malukenho/silex-manager

需求

  • twig/twig
  • symfony/twig-bridge
  • symfony/session
  • symfony/form
  • symfony/security-csrf
  • symfony/translation

用法

首先,您需要将 ManagerControllerProvider 注册到您的 Silex\Application 中。目前,您应该向我们的提供者传递一个 PDO 实例。

$adapter = new \Manager\Db\Adapter\PdoAdapter($pdo);
$app->mount('/manager', new \Manager\Controller\ManagerControllerProvider($adapter));

当您安装 Silex Manager 时,您不需要安装 Silex,因为 Silex 已经安装。所有依赖项也已安装。您只需正确配置这些依赖项。

$app->register(new Provider\TwigServiceProvider(), [
    // Use this path to load the default views (It's use semantic-ui from CDN)
    'twig.path' => __DIR__ . '/vendor/malukenho/silex-manager/views',
]);

$app->register(new Provider\UrlGeneratorServiceProvider());
$app->register(new Provider\SessionServiceProvider());
$app->register(new Provider\ServiceControllerServiceProvider());
$app->register(new Provider\FormServiceProvider());
$app->register(new Provider\ValidatorServiceProvider());
$app->register(new Provider\TranslationServiceProvider(), [
    'translator.domains' => [],
]);

路由

配置

您必须在 $app['manager-config'] 上放置一些配置,以便利用 Silex Manager 的强大功能。

下面是一个基本配置的示例。注意,users 指的是表名,并且这包括一个配置界面/回调/字段的文件。

$app['manager-config'] = [
    // Inside the `manager` key we have config for tables
    'manager' => [
        'users' => require __DIR__ . '/config/users.php',
    ],
    // Configuration pointing to default view
    // You can use your own views
    'view'    => [
        'index' => 'manager-index.twig',
        'new'   => 'manager-new.twig',
        'edit'  => 'manager-edit.twig',
    ],
];

让我们看看 /config/users.php 配置定义文件中的 index 动作。

return [

    // List action
    'index' => [
        // Define columns
        // column name on db => label
        'columns' => [
            'id'    => 'Id',
            'name'  => 'Name',
            'email' => 'Email',
        ],
        // Modifies how the colums value is showed up
        'modifier' => [
            'id' => function (array $data) {
                return '#' . $data['id'];
            },
        ],
        // Set a primary key name, It's ID by default
        'pk' => 'id',
        // UI page header
        'header' => 'Manager users',
         // UI page icon
        'icon'   => 'user',
        // Allow pagination
        'pagination' => true,
        // Show items per page
        'item_per_page' => 10,
        // Actions allowed
        'action' => [
            'new' => 'Create a new user',
            'edit' => 'Edit',
            'delete' => 'Delete',
        ],
        // Configuration for search field
        'search' => [
            'input' =>[
                [
                    'name' => 'name',
                    'placeholder' => 'Find by name',
                ],
            ],
            'button' => 'Filter'
        ],
    ],
];

新表单

当提交表单时,您可以做一些有趣的事情,比如调用 beforeafter 函数,这允许您在表单处理前后执行一些操作。

'before' => function (array $data) use ($app) {

    if ($app['auth.model']->hasStudentWithMail($data['email'])) {
        $app['session']->getFlashBag()->add(
            'messageError',
            'Email já cadastrado, por favor escolha outro email.'
        );

        $url = $_SERVER['REQUEST_URI'];

        header("Location: {$url}");
        exit;
    }
},  

自定义查询

有时您可能需要创建一个自定义查询来在列表页面上显示数据。这是通过设置键 query 来实现的。

$app['manager-config'] = [
    'manager' => [
        'users' => [
            'index' => [
                'query' => 'SELECT * FROM users u INNER JOIN user_admin ua ON u.id = ua.id',
            ],
        ],
    ],
];

动作

缺失文档

视图

目前我们提供简单的视图。您可以在 views 文件夹中查看以实现自己的表示文件。新的表示文件可以通过以下指令进行配置。


缺失文档

之前

缺失文档

之后

缺失文档

自定义名称

缺失文档

修饰符

缺失文档