我试图扩展奏鸣曲用户包的用户实体,但它总是失败(至少当我想使用带有奏鸣曲管理包的ist时)。如果我使用Application / Sonata / UserBundle / Entity / User Entity,它可以工作,我可以在仪表板中编辑它。
我的实体看起来像这样:
<?php
namespace MyNamespace\MyBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\EntityManager;
use Sonata\UserBundle\Entity\BaseUser as BaseUser;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
}
在我的config.yml中,我定义了以下选项:
fos_user:
db_driver: orm
firewall_name: main
user_class: MyNamespace\MyBundle\Entity\User
group:
group_class: Application\Sonata\UserBundle\Entity\Group
group_manager: sonata.user.orm.group_manager
service:
user_manager: sonata.user.orm.user_manager
和
sonata_user:
security_acl: true
manager_type: orm
class:
user: MyNamespace\MyBundle\Entity\User
登录正常,但我收到错误消息
&#34;在呈现模板期间抛出了异常(&#34;无法生成指定路由的URL&#34; admin_sonata_user_user_create&#34;因为此类路由不存在。&#34 ;)在SonataAdminBundle:Block:第39行的block_admin_list.html.twig。&#34;
我的routing.yml看起来像这样:
admin:
resource: '@SonataAdminBundle/Resources/config/routing/sonata_admin.xml'
prefix: /
_sonata_admin:
host: www.mydomain.com
resource: .
type: sonata_admin
prefix: /
schemes: [https]
即使我一步一步地遵循本教程(Extending Sonata User Bundle and adding new fields),我也会遇到同样的错误。
答案 0 :(得分:1)
Application/Sonata/UserBundle/Entity/User
已延长Sonata/UserBundle/Entity/User
,为什么不只是在那里进行更改而不是另一个类?
它已经扩展了捆绑,因此您可以在那里进行所有更改。我把其他字段放在那里。
我的文件Application / Sonata / UserBundle / Entity / User.php就像:
namespace Application\Sonata\UserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Sonata\UserBundle\Entity\BaseUser as BaseUser;
/**
* User
* @ORM\Entity
* @ORM\Table(name="fos_user_user")
*/
class User extends BaseUser
{
/**
* @var integer
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*/
private $company;
如果您真的想要使用其他课程,则需要注意路由。
检查\vendor\sonata-project\user-bundle\Resources\config\admin_orm.xml
- 这是将原始类添加为服务的位置。
您可以看到%sonata.user.admin.user.entity%参数 - 如果要更改为其他类,可以在config中更改此参数。我认为这比改变fos_user.user_class更好。
您也可以将整个文件移至Application/Sonata/UserBudle
,但之后需要将其加载到DependencyInjection/ApplicationSonataUserExtension.php
顺便说一句,这在Sonata中非常棘手,用户捆绑为Paweł编写并进行大量调试以使其正常工作