sidus / admin-bundle
基于动作的简单可扩展的admin管理,内置路由生成
v5.0.3
2024-01-25 15:02 UTC
Requires
- php: >=8.1
- sidus/datagrid-bundle: ~4.0
- symfony/event-dispatcher: >=6.3
- symfony/form: >=6.3
- symfony/http-foundation: >=6.3
- symfony/http-kernel: >=6.3
- symfony/routing: >=6.3
- symfony/security-core: >=6.3
- symfony/translation-contracts: >=3.0
- symfony/yaml: >=6.3
- twig/twig: >=3.0
- dev-v2.0-dev
- v5.x-dev
- v5.0.3
- v5.0.2
- v5.0.1
- v5.0.0
- v4.x-dev
- v4.1.4
- v4.1.3
- v4.1.2
- v4.1.1
- v4.1.0
- v4.0.2
- v4.0.1
- v4.0.0
- v3.0.2
- v3.0.1
- v3.0.0
- v2.0.1
- v2.0.0
- v1.3.5
- v1.3.4
- v1.3.3
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.1
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0
- dev-v3.0-dev
- dev-v2.0-stable
- dev-v1.3-dev
- dev-v1.3-stable
- dev-v1.2.x-dev
- dev-v1.2.0-RC
- dev-v1.1.x-dev
- dev-v1.1.0-RC
This package is auto-updated.
Last update: 2024-08-25 16:18:39 UTC
README
控制器、路由组件、表单和实体之间的缺失连接。
在twig中的示例
<a href="{{ admin_path('post', 'list') }}">List</a> <a href="{{ entity_path(entity, 'edit') }}">Edit</a>
警告
此包需要Symfony的安全组件,它将强制使用投票器访问任何实体。此包与Doctrine更容易使用,但仍可用于非Doctrine实体。
配置
简单示例
sidus_admin: configurations: post: entity: MyBundle\Entity\Post # Class name of your entity prefix: /post # Routing prefix controller_pattern: - 'Sidus\AdminBundle\Action\{{Action}}Action' # Full controller reference template_pattern: - '@SidusAdmin/Action/{{action}}.{{format}}.twig' actions: list: path: /list # Routing path edit: path: /edit/{id} form_type: MyBundle\Form\Type\EditPostType # Form type to use in controller
配置参考
除非指定其他值,否则所有值均为默认值。
sidus_admin: admin_class: Sidus\AdminBundle\Model\Admin action_class: Sidus\AdminBundle\Model\Action configurations: <admin_code>: entity: ~ # REQUIRED: The fully qualified class name of the entity (or the Doctrine's shorter reference) prefix: ~ # REQUIRED: Routing prefix for all actions controller_pattern: [] # The controller reference that will be used to generate routing # Available interpolation variables are: # {{admin}} lowercase first letter admin code # {{Admin}} uppercase first letter admin code # {{action}} lowercase first letter action code # {{Action}} uppercase first letter action code # If you don't set any controller_pattern you will need to set the _controller attribute in the defaults of # each action. template_pattern: [] # The template pattern action_class: # Defaults to main action_class options: {} # You can put anything here permissions: [ ROLE_USER ] # List of permissions required to access the whole admin actions: <action_code>: # The action code needs to match the controller's method name without the "Action" suffix form_type: ~ # Useful in combination with AbstractAdminController::getForm($request, $data) form_options: ~ # Static form options template: ~ # Computed by the TemplateResolver using template_pattern if null permissions: [ ROLE_USER ] # List of permissions required to access the action # All the following options are used to generate the route for the routing component # See Symfony doc here: https://symfony.ac.cn/doc/current/routing.html path: ~ # REQUIRED defaults: ~ requirements: ~ options: ~ host: ~ schemes: ~ methods: ~ condition: ~
用法
生成路由
当路由到实体时,AdminRouter组件将尝试从路由上下文中获取缺失的路由参数,然后从实体本身获取,这意味着如果您将路由参数名称命名为实体属性,则无需手动传递任何参数。
PHP
<?php /** @var $adminRouter AdminRouter */ use Sidus\AdminBundle\Routing\AdminRouter;$adminRouter->generateAdminPath('post', 'list'); $adminRouter->generateEntityPath($entity, 'edit');
当处理单个类多个admin时,您可以使用此函数代替
<?php /** @var $adminRouter AdminRouter */ use Sidus\AdminBundle\Routing\AdminRouter;$adminRouter->generateAdminEntityPath('post', $entity, 'edit');
Twig
<a href="{{ admin_path('post', 'list') }}">List</a> <a href="{{ entity_path(entity, 'edit') }}">Edit</a>
当处理单个类多个admin时,您可以使用此函数代替
<a href="{{ admin_entity_path('post', entity, 'edit') }}">Edit</a>
附加可选参数
对于每个方法,您可以在操作名称之后传递额外的路由参数,您还可以设置UrlGeneratorInterface引用类型(绝对、相对...)。
<?php /** @var $adminRouter AdminRouter */ use Sidus\AdminBundle\Routing\AdminRouter;use Symfony\Component\Routing\Generator\UrlGeneratorInterface;$adminRouter->generateAdminEntityPath( 'post', $entity, 'edit', ['parametrer' => 'value'], UrlGeneratorInterface::ABSOLUTE_PATH );