Hopefully fixed AbstractParameter exception on the LabelProfile controller

This commit is contained in:
Jan Böhmer 2023-02-03 23:43:44 +01:00
parent d804184073
commit f0947fd948
14 changed files with 85 additions and 82 deletions

View file

@ -41,12 +41,12 @@ use Symfony\Component\Routing\Annotation\Route;
*/
class AttachmentTypeController extends BaseAdminController
{
protected $entity_class = AttachmentType::class;
protected $twig_template = 'AdminPages/AttachmentTypeAdmin.html.twig';
protected $form_class = AttachmentTypeAdminForm::class;
protected $route_base = 'attachment_type';
protected $attachment_class = AttachmentTypeAttachment::class;
protected $parameter_class = AttachmentTypeParameter::class;
protected string $entity_class = AttachmentType::class;
protected string $twig_template = 'AdminPages/AttachmentTypeAdmin.html.twig';
protected string $form_class = AttachmentTypeAdminForm::class;
protected string $route_base = 'attachment_type';
protected string $attachment_class = AttachmentTypeAttachment::class;
protected ?string $parameter_class = AttachmentTypeParameter::class;
/**
* @Route("/{id}", name="attachment_type_delete", methods={"DELETE"})

View file

@ -65,12 +65,12 @@ use function Symfony\Component\Translation\t;
abstract class BaseAdminController extends AbstractController
{
protected $entity_class = '';
protected $form_class = '';
protected $twig_template = '';
protected $route_base = '';
protected $attachment_class = '';
protected $parameter_class = '';
protected string $entity_class = '';
protected string $form_class = '';
protected string $twig_template = '';
protected string $route_base = '';
protected string $attachment_class = '';
protected ?string $parameter_class = '';
protected UserPasswordHasherInterface $passwordEncoder;
protected TranslatorInterface $translator;
@ -103,7 +103,7 @@ abstract class BaseAdminController extends AbstractController
throw new InvalidArgumentException('You have to override the $attachment_class value with a valid Attachment class in your subclass!');
}
if ('' === $this->parameter_class || !is_a($this->parameter_class, AbstractParameter::class, true)) {
if ('' === $this->parameter_class || ($this->parameter_class && !is_a($this->parameter_class, AbstractParameter::class, true))) {
throw new InvalidArgumentException('You have to override the $parameter_class value with a valid Parameter class in your subclass!');
}

View file

@ -40,12 +40,12 @@ use Symfony\Component\Routing\Annotation\Route;
*/
class CategoryController extends BaseAdminController
{
protected $entity_class = Category::class;
protected $twig_template = 'AdminPages/CategoryAdmin.html.twig';
protected $form_class = CategoryAdminForm::class;
protected $route_base = 'category';
protected $attachment_class = CategoryAttachment::class;
protected $parameter_class = CategoryParameter::class;
protected string $entity_class = Category::class;
protected string $twig_template = 'AdminPages/CategoryAdmin.html.twig';
protected string $form_class = CategoryAdminForm::class;
protected string $route_base = 'category';
protected string $attachment_class = CategoryAttachment::class;
protected ?string $parameter_class = CategoryParameter::class;
/**
* @Route("/{id}", name="category_delete", methods={"DELETE"})

View file

@ -58,12 +58,12 @@ use Symfony\Contracts\Translation\TranslatorInterface;
*/
class CurrencyController extends BaseAdminController
{
protected $entity_class = Currency::class;
protected $twig_template = 'AdminPages/CurrencyAdmin.html.twig';
protected $form_class = CurrencyAdminForm::class;
protected $route_base = 'currency';
protected $attachment_class = CurrencyAttachment::class;
protected $parameter_class = CurrencyParameter::class;
protected string $entity_class = Currency::class;
protected string $twig_template = 'AdminPages/CurrencyAdmin.html.twig';
protected string $form_class = CurrencyAdminForm::class;
protected string $route_base = 'currency';
protected string $attachment_class = CurrencyAttachment::class;
protected ?string $parameter_class = CurrencyParameter::class;
protected ExchangeRateUpdater $exchangeRateUpdater;

View file

@ -41,12 +41,12 @@ use Symfony\Component\Routing\Annotation\Route;
*/
class FootprintController extends BaseAdminController
{
protected $entity_class = Footprint::class;
protected $twig_template = 'AdminPages/FootprintAdmin.html.twig';
protected $form_class = FootprintAdminForm::class;
protected $route_base = 'footprint';
protected $attachment_class = FootprintAttachment::class;
protected $parameter_class = FootprintParameter::class;
protected string $entity_class = Footprint::class;
protected string $twig_template = 'AdminPages/FootprintAdmin.html.twig';
protected string $form_class = FootprintAdminForm::class;
protected string $route_base = 'footprint';
protected string $attachment_class = FootprintAttachment::class;
protected ?string $parameter_class = FootprintParameter::class;
/**
* @Route("/{id}", name="footprint_delete", methods={"DELETE"})

View file

@ -40,13 +40,13 @@ use Symfony\Component\Routing\Annotation\Route;
*/
class LabelProfileController extends BaseAdminController
{
protected $entity_class = LabelProfile::class;
protected $twig_template = 'AdminPages/LabelProfileAdmin.html.twig';
protected $form_class = LabelProfileAdminForm::class;
protected $route_base = 'label_profile';
protected $attachment_class = LabelAttachment::class;
protected string $entity_class = LabelProfile::class;
protected string $twig_template = 'AdminPages/LabelProfileAdmin.html.twig';
protected string $form_class = LabelProfileAdminForm::class;
protected string $route_base = 'label_profile';
protected string $attachment_class = LabelAttachment::class;
//Just a placeholder
protected $parameter_class = AbstractParameter::class;
protected ?string $parameter_class = null;
/**
* @Route("/{id}", name="label_profile_delete", methods={"DELETE"})

View file

@ -40,12 +40,12 @@ use Symfony\Component\Routing\Annotation\Route;
*/
class ManufacturerController extends BaseAdminController
{
protected $entity_class = Manufacturer::class;
protected $twig_template = 'AdminPages/ManufacturerAdmin.html.twig';
protected $form_class = CompanyForm::class;
protected $route_base = 'manufacturer';
protected $attachment_class = ManufacturerAttachment::class;
protected $parameter_class = ManufacturerParameter::class;
protected string $entity_class = Manufacturer::class;
protected string $twig_template = 'AdminPages/ManufacturerAdmin.html.twig';
protected string $form_class = CompanyForm::class;
protected string $route_base = 'manufacturer';
protected string $attachment_class = ManufacturerAttachment::class;
protected ?string $parameter_class = ManufacturerParameter::class;
/**
* @Route("/{id}", name="manufacturer_delete", methods={"DELETE"})

View file

@ -41,12 +41,12 @@ use Symfony\Component\Routing\Annotation\Route;
*/
class MeasurementUnitController extends BaseAdminController
{
protected $entity_class = MeasurementUnit::class;
protected $twig_template = 'AdminPages/MeasurementUnitAdmin.html.twig';
protected $form_class = MeasurementUnitAdminForm::class;
protected $route_base = 'measurement_unit';
protected $attachment_class = MeasurementUnitAttachment::class;
protected $parameter_class = MeasurementUnitParameter::class;
protected string $entity_class = MeasurementUnit::class;
protected string $twig_template = 'AdminPages/MeasurementUnitAdmin.html.twig';
protected string $form_class = MeasurementUnitAdminForm::class;
protected string $route_base = 'measurement_unit';
protected string $attachment_class = MeasurementUnitAttachment::class;
protected ?string $parameter_class = MeasurementUnitParameter::class;
/**
* @Route("/{id}", name="measurement_unit_delete", methods={"DELETE"})

View file

@ -41,12 +41,12 @@ use Symfony\Component\Routing\Annotation\Route;
*/
class ProjectAdminController extends BaseAdminController
{
protected $entity_class = Project::class;
protected $twig_template = 'AdminPages/ProjectAdmin.html.twig';
protected $form_class = ProjectAdminForm::class;
protected $route_base = 'project';
protected $attachment_class = ProjectAttachment::class;
protected $parameter_class = ProjectParameter::class;
protected string $entity_class = Project::class;
protected string $twig_template = 'AdminPages/ProjectAdmin.html.twig';
protected string $form_class = ProjectAdminForm::class;
protected string $route_base = 'project';
protected string $attachment_class = ProjectAttachment::class;
protected ?string $parameter_class = ProjectParameter::class;
/**
* @Route("/{id}", name="project_delete", methods={"DELETE"})

View file

@ -40,12 +40,12 @@ use Symfony\Component\Routing\Annotation\Route;
*/
class StorelocationController extends BaseAdminController
{
protected $entity_class = Storelocation::class;
protected $twig_template = 'AdminPages/StorelocationAdmin.html.twig';
protected $form_class = StorelocationAdminForm::class;
protected $route_base = 'store_location';
protected $attachment_class = StorelocationAttachment::class;
protected $parameter_class = StorelocationParameter::class;
protected string $entity_class = Storelocation::class;
protected string $twig_template = 'AdminPages/StorelocationAdmin.html.twig';
protected string $form_class = StorelocationAdminForm::class;
protected string $route_base = 'store_location';
protected string $attachment_class = StorelocationAttachment::class;
protected ?string $parameter_class = StorelocationParameter::class;
/**
* @Route("/{id}", name="store_location_delete", methods={"DELETE"})

View file

@ -40,12 +40,12 @@ use Symfony\Component\Routing\Annotation\Route;
*/
class SupplierController extends BaseAdminController
{
protected $entity_class = Supplier::class;
protected $twig_template = 'AdminPages/SupplierAdmin.html.twig';
protected $form_class = SupplierForm::class;
protected $route_base = 'supplier';
protected $attachment_class = SupplierAttachment::class;
protected $parameter_class = SupplierParameter::class;
protected string $entity_class = Supplier::class;
protected string $twig_template = 'AdminPages/SupplierAdmin.html.twig';
protected string $form_class = SupplierForm::class;
protected string $route_base = 'supplier';
protected string $attachment_class = SupplierAttachment::class;
protected ?string $parameter_class = SupplierParameter::class;
/**
* @Route("/{id}", name="supplier_delete", methods={"DELETE"})

View file

@ -44,12 +44,12 @@ use Symfony\Component\Routing\Annotation\Route;
*/
class GroupController extends BaseAdminController
{
protected $entity_class = Group::class;
protected $twig_template = 'AdminPages/GroupAdmin.html.twig';
protected $form_class = GroupAdminForm::class;
protected $route_base = 'group';
protected $attachment_class = GroupAttachment::class;
protected $parameter_class = GroupParameter::class;
protected string $entity_class = Group::class;
protected string $twig_template = 'AdminPages/GroupAdmin.html.twig';
protected string $form_class = GroupAdminForm::class;
protected string $route_base = 'group';
protected string $attachment_class = GroupAttachment::class;
protected ?string $parameter_class = GroupParameter::class;
/**
* @Route("/{id}/edit/{timestamp}", requirements={"id"="\d+"}, name="group_edit")

View file

@ -53,13 +53,12 @@ use Symfony\Component\Routing\Annotation\Route;
*/
class UserController extends AdminPages\BaseAdminController
{
protected $entity_class = User::class;
protected $twig_template = 'AdminPages/UserAdmin.html.twig';
protected $form_class = UserAdminForm::class;
protected $route_base = 'user';
protected $attachment_class = UserAttachment::class;
//Just define a value here to prevent error. It is not used.
protected $parameter_class = AbstractParameter::class;
protected string $entity_class = User::class;
protected string $twig_template = 'AdminPages/UserAdmin.html.twig';
protected string $form_class = UserAdminForm::class;
protected string $route_base = 'user';
protected string $attachment_class = UserAttachment::class;
protected ?string $parameter_class = null;
protected function additionalActionEdit(FormInterface $form, AbstractNamedDBElement $entity): bool
{

View file

@ -25,6 +25,7 @@ namespace App\Form\AdminPages;
use App\Entity\Base\AbstractNamedDBElement;
use App\Entity\Base\AbstractStructuralDBElement;
use App\Entity\LabelSystem\LabelProfile;
use App\Entity\Parameters\AbstractParameter;
use App\Form\AttachmentFormType;
use App\Form\ParameterType;
use App\Form\Type\MasterPictureAttachmentType;
@ -56,6 +57,7 @@ class BaseEntityAdminForm extends AbstractType
parent::configureOptions($resolver);
$resolver->setRequired('attachment_class');
$resolver->setRequired('parameter_class');
$resolver->setAllowedTypes('parameter_class', ['string', 'null']);
}
public function buildForm(FormBuilderInterface $builder, array $options): void
@ -143,7 +145,9 @@ class BaseEntityAdminForm extends AbstractType
'empty_data' => null,
]);
if ($entity instanceof AbstractStructuralDBElement) {
if ($options['parameter_class']) {
$prototype = new $options['parameter_class']();
$builder->add(
'parameters',
CollectionType::class,
@ -155,7 +159,7 @@ class BaseEntityAdminForm extends AbstractType
'reindex_enable' => true,
'label' => false,
'by_reference' => false,
'prototype_data' => new $options['parameter_class'](),
'prototype_data' => $prototype,
'entry_options' => [
'data_class' => $options['parameter_class'],
],