vincet / base-bundle
此包已被废弃且不再维护。未建议替换包。
Symfony VinceTBaseBundle
4.1.2
2016-10-25 18:51 UTC
Requires
- php: >=5.3.2
- sensio/generator-bundle: ~3.0
- sonata-project/admin-bundle: ~2.2,>=2.2.4 || ^3.0
- sonata-project/doctrine-orm-admin-bundle: ~2.2 || ^3.0
- symfony/symfony: ~2.8 || ^3.0
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