<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
jgrygierek / sonata-batch-entity-import-bundle example snippets
namespace App\Model\ImportConfiguration;
use App\Entity\User;
use JG\BatchEntityImportBundle\Model\Configuration\AbstractImportConfiguration;
class UserImportConfiguration extends AbstractImportConfiguration
{
public function getEntityClassName(): string
{
return User::class;
}
}
use JG\BatchEntityImportBundle\Model\Form\FormFieldDefinition;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Validator\Constraints\Length;
public function getFieldsDefinitions(): array
{
return [
'age' => new FormFieldDefinition(
IntegerType::class,
[
'attr' => [
'min' => 0,
'max' => 999,
],
]
),
'name' => new FormFieldDefinition(TextType::class),
'description' => new FormFieldDefinition(
TextareaType::class,
[
'attr' => [
'rows' => 2,
],
'constraints' => [new Length(['max' => 255])],
]
),
];
}
use JG\BatchEntityImportBundle\Validator\Constraints\DatabaseEntityUnique;
use JG\BatchEntityImportBundle\Validator\Constraints\MatrixRecordUnique;
public function getMatrixConstraints(): array
{
return [
new MatrixRecordUnique(['fields' => ['field_name']]),
new DatabaseEntityUnique(['entityClassName' => $this->getEntityClassName(), 'fields' => ['field_name']]),
];
}
public function __construct(EntityManagerInterface $em, TestService $service)
{
parent::__construct($em);
$this->testService = $service;
}
public function allowOverrideEntity(): bool
{
return true;
}
public function getEntityTranslationRelationName(): ?string
{
return 'translations';
}
namespace App\Admin;
use App\Model\ImportConfiguration\UserImportConfiguration;
use JG\SonataBatchEntityImportBundle\Admin\AdminWithImportInterface;
use Sonata\AdminBundle\Admin\AbstractAdmin;
class UserAdmin extends AbstractAdmin implements AdminWithImportInterface
{
public function getImportConfigurationClassName(): string
{
return UserImportConfiguration::class;
}
}
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity]
class User
{
#[ORM\Column(type: 'json']
private array $roles = [];
}
use JG\BatchEntityImportBundle\Form\Type\ArrayTextType;
use JG\BatchEntityImportBundle\Model\Form\FormFieldDefinition;
public function getFieldsDefinitions(): array
{
return [
'roles' => new FormFieldDefinition(
ArrayTextType::class,
[
'separator' => '&',
]
),
];
}