<?php
namespace AdminBundle\Admin\SubAutoSite;
use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
use FOS\CKEditorBundle\Form\Type\CKEditorType;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Route\RouteCollectionInterface;
use Sonata\MediaBundle\Form\Type\MediaType;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
class AboutCompanyAdmin extends BaseImporterAdmin
{
protected $baseRouteName = 'admin_vendor_adminbundle_importer-about';
protected $baseRoutePattern = 'importer/about';
/**
* @param RouteCollectionInterface $collection
*/
protected function configureRoutes(RouteCollectionInterface $collection): void
{
$collection->remove('view');
$collection->remove('delete');
$collection->remove('create');
}
public function toString($dealer): string
{
return $dealer->getNameRu() . ' (' . $dealer->getDomain() . ')';
}
/**
* @param FormMapper $formMapper
*/
protected function configureFormFields(FormMapper $formMapper): void
{
$formMapper
->with('Описание (RUS)', ['class' => 'col-md-6'])
->add('about_ru', CKEditorType::class, [
'config_name' => 'default',
'required' => false,
'label' => 'О компании (RUS)'
])
->end()
->with('Описание (UA)', ['class' => 'col-md-6'])
->add('about_ua', CKEditorType::class, [
'config_name' => 'default',
'required' => false,
'label' => 'О компании (UA)'
])
->end()
->with('Фото', ['class' => 'col-md-6'])
->add('image', MediaType::class, [
'provider' => 'sonata.media.provider.image',
'context' => 'dc_site',
'label' => 'Фото'
])
->end()
->end();
}
/**
* @param string $context
* @return ProxyQueryInterface
*/
public function configureQuery($context = 'list'): ProxyQueryInterface
{
$user = $this->security->getUser();
$query = parent::configureQuery($context);
$dealer = $user->getSubDealer();
if (!$dealer) {
throw new AccessDeniedException();
}
$query->andWhere(
$query->expr()->eq($query->getRootAliases()[0] . '.id', ':id')
);
$query->setParameter('id', $dealer->getId());
return $query;
}
/**
* @param ListMapper $listMapper
*/
protected function configureListFields(ListMapper $listMapper): void
{
$listMapper->addIdentifier('id')
->add('name', null, ['label' => 'Название'])
->add('domain', null, ['label' => 'Домен'])
->add('address_ru', null, ['label' => 'Адрес'])
->add('_action', 'actions', [
'label' => 'Действия',
'actions' => [
'edit' => [],
]
]);
}
}