- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了关于 SonataAdminBundle
的继承问题
我有 2 个相互关联的实体:AbstractPerson 和 Vehicle以及继承 AbstractPerson 的 2 个实体:Person 和 Society
<?php
namespace Foo\Bundle\BarBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* AbstractPerson
*
* @ORM\Entity
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({"person" = "Person", "society" = "Society"})
*/
abstract class AbstractPerson
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
protected $name;
/**
* @ORM\OneToMany(targetEntity="Vehicle", mappedBy="owner")
* @ORM\JoinColumn(nullable=false)
*/
protected $vehicles;
}
/**
* Person
*
* @ORM\Entity
*/
class Person extends AbstractPerson
{
}
/**
* Society
*
* @ORM\Entity
*/
class Society extends AbstractContact
{
}
还有我的 Vehicle 实体:
<?php
namespace Foo\Bundle\BarBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* Vehicle
*
* @ORM\Entity
* @ORM\Table(name="vehicle")
*/
class Vehicle
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="AbstractPerson" ,inversedBy="vehicles")
* @ORM\JoinColumn(name="person_id", referencedColumnName="id")
*/
protected $owner;
}
SonataAdminBundle 允许我们使用 admin.yml 中的 setSubClasses 方法集处理实体之间的继承:
services:
sonata.admin.abstract_contact:
class: Foo\Bundle\BarBundle\Admin\AbstractPersonAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Vehicle Manager", label: "AbstractPerson", label_catalogue: "messages" }
arguments:
- ~
- Foo\Bundle\BarBundle\Entity\AbstractPerson
- ~
calls:
- [setSubClasses, [{society: Foo\Bundle\BarBundle\Entity\Society, person: Foo\Bundle\BarBundle\Entity\Person}]] # Here the method that handles inheritance
现在我可以创建Person 和Society 但问题出在Vehicle 表单中。从这种形式我可以创建一个人,但 Sonata 想要实例化一个 AbstractPerson(一个抽象类)
Cannot initialize abstract class: Foo\Bundle\BarBundle\Entity\AbstractPerson
如果有人能帮我实例化一个人或一个社会而不是一个抽象的人,我会很高兴!
抱歉我的英语不好。
谢谢!
最佳答案
1 个人管理员
1 名社团管理员
Person + Society 1 位管理员(可选)
您的逻辑中唯一的缺陷是“sonata.admin.abstract_contact”。从架构的角度来看,Person 和 Society 是两个完全不同的实体,您在这里使用的 Single Table Inheritance 只是为了帮助您的实现看起来更清晰
为了解决这个问题,您需要两个独立的管理员,每个实体一个。
如果你想要一个加入的管理员同时管理两个实体,你需要创建一个第三个管理服务,它有两个字段,都是“sonata_admin_type”,你在其中包括两个管理员。
关于php - SonataAdminBundle 继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32964549/
我无法通过 Sonataadmin 仪表板更新用户密码。 我使用 symfony2 FosUserBundle2.0 SonataAdminBundle(但 不是 使用 SonataUserBundl
我遇到了关于 SonataAdminBundle 的继承问题 我有 2 个相互关联的实体:AbstractPerson 和 Vehicle以及继承 AbstractPerson 的 2 个实体:Per
我正在使用 symfony2 和 SonataAdminBundle。我有一个名为 Post 的简单实体,其中的内容字段基本上是 html 文本(来自 ckeditor 进行记录)。我需要在帖子列表中
我正在使用 SonataAdminBundle 为我的页面实体生成 CRUD。 使用下面的 yaml 文件,菜单将显示在侧栏中。 我想更改群组默认图标“fa fa-folder”。 但我找不到执行此操
当前 2.3 版本中的 Symfony2。我已经在 dev-master 版本中安装了 sonataAdminBundle 。我在 dev-master 中也有 fosUserBundle 。问题是我
在此page我找到了如何为我的自定义操作添加路由。 protected function configureRoutes(RouteCollection $collection) { $col
我们在 Symfony2 应用程序中使用 SonataAdminBundle。编辑实体时,我想将自己的操作添加到位于右上角的下拉菜单中,但我不知道这是如何工作的。 我知道我可以通过 configure
我们如何覆盖单个 Admin 类的奏鸣曲包布局 就像我创建了 3 个管理类 userAdmin、productAdmin、ticketAdmin 现在我想覆盖 ticketAdmin 编辑操作和编辑模
当我想从后端编辑现有用户时遇到问题(使用 SonataAdminBundle 和 FOSUserBundle)。在我的 UserAdmin 类的 configureFormFields 方法中,密码字
我开始使用 SonataAdminBundle在 Symfony2.1 应用。我开发的所有Admin类,现在我希望添加角色以防止对此类用户组(例如非管理员用户)进行查看、列出和编辑操作。 请注意,我没
我有 FOSUserBundle 来管理我的用户,SonataAdminBundle 来管理我的网站...我有一个问题,每当我尝试更改/添加任何用户的密码时,密码都不会编码到 sha512,但当用户在
我将 SonataAdminBundle 与 Symfony 2.2 一起使用,并希望根据登录的用户显示仪表板 block 。 例如 拥有群组 super 管理员权限的用户将看到“用户管理”和“消息”
我想在每个管理员/实体的基础上覆盖 CRUD 列表模板。 假设我有一个名为 MyAdminClass 的管理类。我想通过将模板添加到 app/Resources/SonataAdminBundle/V
安装后Symfony2 cmf ,当我尝试查看管理/仪表板时,出现以下错误: The function "is_granted" does not exist in SonataAdminBundle
我有这样的领域 /** * @ORM\ManyToOne(targetEntity="Town") **/ protected $town; 以及具有此类方法的管理类
我正在使用 FOSUserBundle 1.3 和扩展它的 SonataUserBundle。我有自己的包,它扩展了 SonataUserBundle,并在其中保留了我的用户管理类以及用户和用户组实体
没有任何文件谈论这一点。请帮我。谢谢 最佳答案 管理顶部菜单是根据管理服务定义中的组项自动创建的。所有管理服务都可以分组并显示在顶部菜单中。 Example (请参阅 group="sonata_pa
我想实现一些自定义删除处理。我们有一些类型的实体只在数据库中被标记为已删除。真正从数据库中删除是由一个预定的过程完成的。 现在可以很容易地替换 Admin 类中的 delete 方法,但是我在批处理操
在 Symfony3 项目中,我有一个像这样的 SonataAdminBundle 表单: protected function configureFormFields(FormMapper $f
我刚刚安装了 SonataAdminBundle,我发现 SonataAdminBundle 已经在 public 文件夹中安装了 fontawesome 和另一个 css/js Assets ,我的
我是一名优秀的程序员,十分优秀!