я пытаюсь сонатной администратора конфигурировать пакет, но я имею эту ошибку:Ошибка: Попытка загрузить класс «ProductAdmin» из пространства имен «Admin AdminBundle Admin»
Пытался загрузить класс «ProductAdmin» из пространства имен «Admin \ AdminBundle \ Admin». Вы забыли оператор «use» для другого пространства имен?
защищенная функция getSonata_Admin_ProductService() { $ Экземпляр = новый \ Admin \ AdminBundle \ Admin \ ProductAdmin ('sonata.admin.product', 'Admin \ AdminBundle \ Entity \ Продукт', 'SonataAdminBundle: CRUD') ; $ instance-> setTranslationDomain ('AdminAdminBundle'); $ instance-> setFormTheme (array (0 => 'SonataDoctrineORMAdminBundle: Form: form_admin_fields.html.twig));
У кого-то есть идея, как пропустить эту ошибку?
Спасибо
config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
- { resource: @AdminAdminBundle/Resources/config/admin.yml }
# app/config/config.yml
sonata_block:
default_contexts: [cms]
blocks:
# Enable the SonataAdminBundle block
sonata.admin.block.admin_list:
contexts: [admin]
# Your other blocks
Admin.yml
services:
sonata.admin.Product:
class: Admin\AdminBundle\Admin\ProductAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Content", label: "Product" }
arguments:
- ~
- Admin\AdminBundle\Entity\Product
- ~
calls:
- [ setTranslationDomain, [AdminAdminBundle]]
ProductAdmin.php
<?php
// src/Acme/DemoBundle/Admin/PostAdmin.php
namespace Admin\AdminBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
class ProductAdmin extends Admin
{
// Fields to be shown on create/edit forms
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('title', 'text', array('label' => 'Post Title'))
->add('author', 'entity', array('class' => 'Admin\AdminBundle\Entity\Product'))
->add('body') //if no type is specified, SonataAdminBundle tries to guess it
;
}
// Fields to be shown on filter forms
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('title')
->add('author')
;
}
// Fields to be shown on lists
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('title')
->add('slug')
->add('author')
;
}
}
AdminAdminExtension.php
<?php
namespace Admin\AdminBundle\DependencyInjection;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;
/**
* This is the class that loads and manages your bundle configuration
*
* To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}
*/
class AdminAdminExtension extends Extension
{
/**
* {@inheritdoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
$loader->load('admin.yml');
}
}
autoload.php
<?php
use Doctrine\Common\Annotations\AnnotationRegistry;
use Composer\Autoload\ClassLoader;
/**
* @var ClassLoader $loader
*/
$loader = require __DIR__.'/../vendor/autoload.php';
AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
return $loader;
привет Жерар, я новичок в symfony, поэтому я пытаюсь понять .. Я проверил пространства имен, и кажется, что все в порядке. в моей конфигурации автозагрузки я вижу, что я не загружал сонату проекта, может быть, из-за этого может возникнуть ошибка? как я могу добавить эти строки в автозагрузку. $ loader-> registerNamespaces (array ( // ... 'Sonata' => __DIR __. '/ ../vendor/bundles', 'Exporter' => __DIR __. '/ ../vendor/exporter/lib ', ' Knp \ Bundle '=> __DIR __.'/../vendor/bundles ', ' Knp \ Menu '=> __DIR __.'/../vendor/KnpMenu/src ', // ... )); – Dario
Это должно быть настроено внутри вашего проекта composer.json в разделе '' autoload ''. Может, там что-то не так? См. Https://getcomposer.org/doc/04-schema.md#autoload для получения дополнительной информации. –