<?php
namespace AdminBundle\Admin\Founders;
use AdminBundle\Admin\BaseAdmin;
use FOS\CKEditorBundle\Form\Type\CKEditorType;
use FoundersBundle\Entity\CategoryPost;
use FoundersBundle\Entity\Post;
use FoundersBundle\Model\Post as ModelPost;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Form\Type\ModelType;
use Sonata\MediaBundle\Form\Type\MediaType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Validator\Constraints\Length;
class SocialInvestmentsAdmin extends BasePostAdmin
{
protected $baseRouteName = 'adminbundle_founders_social_investments_admin';
protected $baseRoutePattern = 'founders-post-social-investments';
/**
* @param Post $object
*/
public function prePersist($object): void
{
$object->setPostType(ModelPost::POST_TYPE_SOCIAL_INVESTMENT);
parent::prePersist($object);
}
public function configureQuery($context = 'list'): ProxyQueryInterface
{
$query = parent::configureQuery($context);
$query->where($query->getRootAliases()[0].'.post_type = ' . ModelPost::POST_TYPE_SOCIAL_INVESTMENT);
return $query;
}
protected function configureFormFields(FormMapper $form): void
{
$form
->with('Контент', ['class' => 'col-md-6'])
->add('title', null, ['label' => 'Заголовок', 'required' => true,
'attr' => ['maxlength' => 125],
'constraints' => [
new Length([
'max' => 125,
'maxMessage' => 'Заголовок не може містити більше {{ limit }} символів.'
])
]
])
->add('description_shot', TextareaType::class, ['label' => 'Опис короткий'])
->add('description', CKEditorType::class, ['config_name' => 'default', 'label' => 'Опис повний'])
->add('category', ModelType::class, ['label' => 'Категорія', 'required' => true, 'btn_add' => false, 'query' => $this->getCategoryPost()])
->add('seo_title', TextareaType::class, ['label' => 'SEO Title', 'required' => false])
->add('seo_description', TextareaType::class, ['label' => 'SEO Description', 'required' => false])
->end()
->with('Додатково', ['class' => 'col-md-6'])
->add('state', CheckboxType::class, ['label' => 'Відображати на сайті', 'required' => false])
->add('image_preview', MediaType::class, [
'label' => 'Попередній перегляд',
'provider' => 'sonata.media.provider.image',
'context' => 'dc_site'
])
->add('image', MediaType::class, [
'label' => 'Зображення',
'provider' => 'sonata.media.provider.image',
'context' => 'dc_site'
])
->add('created', DateType::class, ['label' => 'Дата створення', 'widget' => 'single_text',])
->add('url', null, ['label' => 'URL', 'required' => false])
->add('position', NumberType::class, ['label' => 'Порядок виводу'])
->end()
->end();
}
}