【问题标题】:重命名 SonataUserUser 实体后,无法为命名路由“admin_app_sonatauseruser_create”生成 URL
【发布时间】:2021-06-08 08:45:20
【问题描述】:

在我决定将 SonataUserUser 重命名为 User 并将 SonataUserUserGroup 重命名为 group 之前,我的应用程序运行良好。

这就是我的用户实体的样子

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Sonata\UserBundle\Entity\BaseUser;

/**
 * @ORM\Entity
 * @ORM\Table(name="users")
 */
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    protected $id;
    
    .....

    public function __construct()
    {
        parent::__construct();
    }

    public function __toString()
    {
        return $this->getFirstName() === null ? 'New' : $this->getFullname();
    }
}

应用\管理员\用户管理员

declare(strict_types=1);

namespace App\Admin;

use FOS\UserBundle\Model\UserManagerInterface;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Form\Type\ModelType;
use Sonata\AdminBundle\Show\ShowMapper;
use Sonata\Form\Type\DatePickerType;
use Sonata\UserBundle\Form\Type\SecurityRolesType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\LocaleType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\TimezoneType;
use Symfony\Component\Form\Extension\Core\Type\UrlType;
use Sonata\UserBundle\Admin\Model\UserAdmin as BaseUserAdmin;

class UserAdmin extends BaseUserAdmin
{
    protected $translationDomain = 'SonataBundle';


    /**
     * {@inheritdoc}
     */
    protected function configureShowFields(ShowMapper $showMapper): void
    {
        $showMapper
            ->with('General')
                ->add('username')
                ->add('email')
            ->end()
            ->with('Groups')
                ->add('groups')
            ->end()
            ->with('Profile')
                ->add('dateOfBirth')
                ->add('firstname')
                ->add('lastname')
                ->add('website')
                ->add('biography')
                ->add('gender')
                ->add('locale')
                ->add('timezone')
                ->add('phone')
            ->end()
        ;
    }

    /**
     * {@inheritdoc}
     */
    protected function configureFormFields(FormMapper $formMapper): void
    {
        // define group zoning
        $formMapper
            ->tab('Details')
                ->with('Profile', ['class' => 'col-md-6'])->end()
                ->with('General', ['class' => 'col-md-6'])->end()
                ->with('Social', ['class' => 'col-md-6'])->end()
            ->end();

        $now = new \DateTime();

        $genderOptions = [
            'choices' => \call_user_func([$this->getUserManager()->getClass(), 'getGenderList']),
            'required' => true,
            'translation_domain' => $this->getTranslationDomain(),
        ];

        $formMapper
            ->tab('Details')
                ->with('General')
                    ->add('username')
                    ->add('email')
                    ->add('plainPassword', PasswordType::class, [
                        'required' => (!$this->getSubject() || null === $this->getSubject()->getId()),
                        'label' => 'Password',
                        'help' => 'Updating this field will change your password.'
                    ])
                ->end()
                ->with('Profile')
                    ->add('firstname', null, ['required' => false])
                    ->add('lastname', null, ['required' => false])
                    ->add('dateOfBirth', DatePickerType::class, [
                        'required' => false,
                    ])
                    ->add('gender', ChoiceType::class, $genderOptions)
                    ->add('locale', LocaleType::class, ['required' => false])
                    ->add('timezone', TimezoneType::class, ['required' => false])
                    ->add('phone', null, ['required' => false])
                ->end()
            ->end();
    }
}

config/routes/sonata_admin.yaml

admin_area:
    resource: "@SonataAdminBundle/Resources/config/routing/sonata_admin.xml"
    prefix: /admin

_sonata_admin:
    resource: .
    type: sonata_admin
    prefix: /admin

config/packages/sonata_user

sonata_user:
    security_acl: false
    manager_type: orm
    class:
        user: App\Entity\User
        group: App\Entity\Group

    mailer: sonata.user.mailer.default

    impersonating:
        route: sonata_admin_dashboard

    table:
        user_group: "users_groups"

我得到的错误是An exception has been thrown during the rendering of a template ("Unable to generate a URL for the named route "admin_app_sonatausergroup_create" as such route does not exist."). in in vendor/sonata-project/admin-bundle/src/Resources/views/Block/block_admin_list.html.twig (line 28)

感谢任何形式的帮助

【问题讨论】:

    标签: symfony sonata symfony-sonata sonata-user-bundle


    【解决方案1】:

    php bin/console debug:router 返回什么?您可以找到我期望的正在使用的路线名称。我正在开发的示例输出:

      dashboard                   ANY      ANY      ANY    /account/dashboard
      home                        ANY      ANY      ANY    /
      app_register                ANY      ANY      ANY    /register
      app_login                   ANY      ANY      ANY    /login
      app_logout                  ANY      ANY      ANY    /logout
    

    【讨论】:

    • 您好,抱歉没有回复您。我设法让它工作。感谢您提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 2018-12-15
    • 2014-02-06
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    相关资源
    最近更新 更多