2

私は何日もの間、何がうまくいかないのか探してきました。Sonata の Web サイトのドキュメントに従って何度か繰り返しましたが、ダッシュボードはまだ空です。AdminClassand Services(および をセットアップ) を作成した後config.yml、エンティティを再生成し、スキーマを更新しましたが、Sonata は、必要なエンティティのテーブルを DB に作成しましたadmin

これが私のコードですApp/Config/Config.yml(インポート用のファイルの上部)

imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: @materniteamAppBundle/Resources/config/admin.yml }
- { resource: @materniteamUserBundle/Resources/config/admin.yml }

App/Config/Config.yml(ソナタ設定を含むファイルの下部)

# FOS USER
   fos_user:
       db_driver:     orm
       firewall_name: main
      user_class:    materniteam\UserBundle\Entity\User

# ADMIN SONATA
   sonata_block:
        default_contexts: [cms]
        blocks:
        sonata.admin.block.admin_list:
        contexts:   [admin]

            sonata.block.service.text:
            sonata.block.service.action:
            sonata.block.service.rss:

 sonata_admin:
     title: Materniteam
         security:
            handler: sonata.admin.security.handler.role
            acl_user_manager: fos_user.user_manager

エンティティ Contact の管理者クラスは次の//src/APP/APPBundle/Admin/ContactAdmin.phpとおりです。

<?php

   namespace materniteam\AppBundle\Admin;

   use Sonata\AdminBundle\Admin\Admin;
   use Sonata\AdminBundle\Datagrid\ListMapper;
   use Sonata\AdminBundle\Datagrid\DatagridMapper;
   use Sonata\AdminBundle\Form\FormMapper;

  class ContactAdmin extends Admin
  {
    protected function configureFormFields(FormMapper $formMapper)
   {
    $formMapper
        ->with('General')
            ->add('prenom')
            ->add('nom')
            ->add('adresse')
            ->add('codePostal')
            ->add('ville')
        ->end()
    ;
}

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->addIdentifier('Nom')
        ->add('prenom')
        ->add('adresse')
        ->add('codePostal')
        ->add('ville')
        ->add('_action', 'actions', array(
            'actions' => array(
            'view' => array(),
            'edit' => array(),
            'delete' => array(),
            )
        ))
    ;
}

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper
        ->add('prenom')
        ->add('nom')
        ->add('adresse')
    ;
}
}
?>

そして最後に、これが私のサービスコールです//src/APP/APPBundle/Resources/config/admin.yml

services:
materniteam.app.admin.contact:
    class: materniteam\AppBundle\Admin\ContactAdmin
    tags:
        - { name: sonata.admin, manager_type: orm, group: "App", label: "Contact" }
    arguments: [ null, materniteam\AppBundle\Entity\Contact, SonataAdminBundle:CRUD ]

私が言ったように、エラーはありませんが、ダッシュボードにはエンティティがリストされていません。さらにコードが必要な場合は、お問い合わせください。このメッセージを編集します。

Sonata グループのメンバーがこれを読んでいる場合:

ドキュメントを更新してください!!!

4

2 に答える 2

3

ソナタのセキュリティ部分で問題が発生しているようです。

私の config.yml では、sonata のセキュリティを次の値に設定しています。

    security:
    handler: sonata.admin.security.handler.role

ユーザーロールに基づいてセキュリティを使用するようにソナタに指示します(これは素晴らしいと思います)

    security:
    handler: sonata.admin.security.handler.noop

これは、sonata に Symfony ベースのセキュリティを使用するように指示します。(ところで、ユーザーを ROLE_ADMIN に昇格させて、sonata ダッシュボードにアクセスし続ける必要がありました)

于 2014-02-19T11:34:31.810 に答える