创建管理员
编辑本页创建管理员
您已经能够使用管理界面了前一章.在本教程中,您将学习如何告诉SonataAdmin管理员如何管理您的模型。
步骤0:创建模型
在本教程的其余部分,您将需要某种类型的模型。在本教程中,博客
而且类别
将被使用:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
/ / src /实体/ BlogPost.php最后类博客{/ /……/ * * *@ORM\Column(name="title", type="string") */私人字符串?$标题=零;/ * * *@ORM\Column(name="body", type="text") */私人字符串?$身体=零;/ * * *@ORM\Column(name="draft", type="boolean") */私人保龄球$草案=假;/ * * *@ORM\ManyToOne(targetEntity="Category", inversedBy="blogPosts") */私人类别?$类别=零;}
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
/ / src /实体/ Category.php使用学说\常见的\集合\ArrayCollection;使用学说\常见的\集合\集合;最后类类别{/ /……/ * * *@ORM\Column(name="name", type="string") */私人字符串?$的名字=零;/ * * *@ORM\OneToMany(targetEntity="BlogPost", mappedBy="category") */私人集合$篇博文;公共函数__construct(){$这->篇博文=新ArrayCollection ();}公共函数getBlogPosts():集合{返回$这->篇博文;}}
在此之后,为这些实体创建模式:
1
bin /控制台学说:模式:创建
请注意
本文假设您具有Doctrine2 ORM的基本知识,并且已经正确地设置了数据库。您可以在Doctrine实体中了解更多信息数据库和ORM原则一章。
步骤1:创建一个管理类
SonataAdminBundle帮助您使用图形化界面管理数据,该界面允许您创建、更新或搜索模型实例。bundle依赖于Admin类来知道哪些模型将被管理,以及这些操作将是什么样子。
Admin类决定在列表中显示哪些字段,哪些字段用于查找条目,以及创建表单的样子。每个模型都有自己的Admin类。
了解了这一点,让我们为类别
实体。最简单的方法是通过扩展奏鸣曲\ AdminBundle \ Admin \ AbstractAdmin
:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
/ / src / Admin / CategoryAdmin.php名称空间应用程序\管理;使用奏鸣曲\AdminBundle\管理\AbstractAdmin;使用奏鸣曲\AdminBundle\数据表格\DatagridMapper;使用奏鸣曲\AdminBundle\数据表格\ListMapper;使用奏鸣曲\AdminBundle\形式\FormMapper;使用奏鸣曲\AdminBundle\显示\ShowMapper;使用ob娱乐下载\组件\形式\扩展\核心\类型\TextType;最后类CategoryAdmin扩展AbstractAdmin{受保护的函数configureFormFields(FormMapper$形式):无效{$形式->add (“名字”, TextType::类);}受保护的函数configureDatagridFilters(DatagridMapper$数据表格):无效{$数据表格->add (“名字”);}受保护的函数configureListFields(ListMapper$列表):无效{$列表->addIdentifier (“名字”);}受保护的函数configureShowFields(ShowMapper$显示):无效{$显示->add (“名字”);}}
那么,这段代码是做什么的呢?
- configureFormFields ():该方法配置在编辑和创建操作中显示哪些字段。的
FormMapper
行为类似于FormBuilder
Symfonyob娱乐下载 Form组件; - configureDatagridFilters ():该方法配置过滤器,用于对模型列表进行过滤和排序;
- configureListFields ():该方法配置当列出所有模型时显示哪些字段
addIdentifier ()
方法意味着该字段将链接到该特定模型的显示/编辑页面); - configureShowFields ():该方法配置在show动作中显示哪些字段。
这是Admin类的最基本示例。您可以使用Admin类配置更多内容。这将在其他更高级的文章中讨论。
步骤2:注册Admin类
现在您已经创建了一个Admin类,但是SonataAdminBundle目前无法知道这个Admin类的存在。要告诉SonataAdminBundle这个Admin类的存在,您必须创建一个服务并使用sonata.admin
标签:
- YAML
1 2 3 4 5 6 7 8
#配置/ services.yaml服务:#……admin.category:类:App \ Admin \ CategoryAdmin标签:-{名称:sonata.admin,model_class:应用\ \实体类别,manager_type:orm,标签:类别}
标签选项 | 描述 |
---|---|
的名字 | 服务标签名称 |
model_class | 实体类,例如:应用\ \实体类别 |
manager_type | 经理类型(orm ,odm ) |
标签 | 标签,例如类别 |
集团(可选 ) |
管理员组,它将被用于在左侧菜单分组,例如类别 |
控制器(可选 ) |
如果您想使用自定义控制器,请传递类名。 |
基本Admin类的构造函数有许多参数。SonataAdminBundle提供了一个编译器通道,它负责为您正确地配置它。您经常可以使用标记属性来调整内容。这里显示的代码是使其正常工作所需的最短代码。
步骤3:注册SonataAdmin自定义路由
SonataAdminBundle动态地为Admin类生成路由。要加载这些路由,你必须确保SonataAdminBundle的路由加载器被执行:
- YAML
1 2 3 4 5 6 7
#配置/线路/ sonata_admin.yaml#……_sonata_admin:资源:.类型:sonata_admin前缀:/管理
查看分类管理界面
现在您已经为您的类别创建了管理类,您可能想知道它在管理界面中的样子。好吧,让我们去看看http://localhost:8000/admin
你可以随意添加一些类别,比如“Symfony”和“Sonata Project”。ob娱乐下载在接下来的章节中,您将为博客
实体,并了解有关此类的更多信息。
请注意
如果你没有看到漂亮的标签,而是像“link_add”这样的标签,你应该确保你看到了启用翻译器.
在下一章你会看到表单视图。