vincet/base-bundle

此包已被废弃且不再维护。未建议替换包。

Symfony VinceTBaseBundle

安装次数: 1,298

依赖者: 2

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 3

公开问题: 0

类型:symfony-bundle

4.1.2 2016-10-25 18:51 UTC

This package is auto-updated.

Last update: 2023-07-27 08:49:01 UTC


README

此扩展定义基础类以改进您的开发。

它需要 SonataAdminBundle 和 SonataDoctrineORMAdminBundle

安装

使用 composer 安装

composer require vincet/base-bundle

对于 symfony <2.5 使用 2.2 版本

composer require vincet/base-bundle=2.2

实体管理

此扩展定义了一个与 SonataAdmin ModelManager 兼容的 BaseManager 类。

只需为您的实体定义一个新类

namespace Acme\DemoBundle\Manager;

use VinceT\BaseBundle\Manager\BaseManager;

class PostManager extends BaseManager
{
}

在您的 services.yml 中将管理器定义为服务

parameters:
    post_manager.class: Acme\DemoBundle\Manager\PostManager

services:
    post_manager:
        class: %post_manager.class%
        arguments: [@service_container]

现在您可以从任何控制器访问此管理器

[...]
$postManager = $this->container->get('post_manager');
[...]
$post = new Acme\DemoBundle\Entity\Post();
[...]
$postManager->create($post);
[...]
$postManager->update($post);
[...]
$postManager->delete($post);
[...]

要使用此管理器与 SonataAdmin 一起,请在您的 services.yml 文件中添加对 setModelManager 的调用

services:
    acme.demo.admin.post:
      class: Acme\DemoBundle\Admin\PostAdmin
      tags:
        - { name: sonata.admin, manager_type: orm, group: Blog, label: Post }
      arguments: [null, Acme\DemoBundle\Entity\Post, AcmeDemoBundle:PostAdmin]
      calls:
        - [ setModelManager, [ @page_manager ] ]
        - [ setTranslationDomain, [ AcmeDemoBundle ] ]

您的前端和 Admin 应用程序现在将使用相同的实体管理器。

Admin 控制器

此扩展还定义了一个 BaseAdminController,它捕获在管理员操作期间抛出的异常。它非常容易使用。

定义您的管理员控制器

namespace Acmd\DemoBundle\Controller;

use VinceT\BaseBundle\Controller\BaseAdminController;

class PostAdminController extends BaseAdminController
{
}

不要忘记在您的管理员服务(第三个参数)中使用此控制器。

services:
    acme.demo.admin.post:
      class: Acme\DemoBundle\Admin\PostAdmin
      tags:
        - { name: sonata.admin, manager_type: orm, group: Blog, label: Post }
      arguments: [null, Acme\DemoBundle\Entity\Post, AcmeDemoBundle:PostAdmin]

命令

为了使您的开发更快,一个命令可以为实体、扩展或命名空间生成以下类

  • Admin/EntityAdmin
  • Controller/Admin/EntityAdminController
  • Manager/EntityManager

并创建/更新以下文件

  • Resources/config/services.yml
  • Resources/translations/YourBundle.en.yml
  • Resources/translations/YourBundle.fr.yml

要使用它

php app/console vincet:generate MyBundle:Post

另一个命令生成前端 CRUD 控制器。它基于 \Sensio\Bundle\GeneratorBundle\Command\GenerateDoctrineCrudCommand

要使用它

php app/console vincet:generate:crud