PHP code example of jgrygierek / batch-entity-import-bundle
1. Go to this page and download the library: Download jgrygierek/batch-entity-import-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
jgrygierek / 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\Controller;
use App\Model\ImportConfiguration\UserImportConfiguration;
use JG\BatchEntityImportBundle\Controller\ImportConfigurationAutoInjectInterface;
use JG\BatchEntityImportBundle\Controller\ImportConfigurationAutoInjectTrait;
use JG\BatchEntityImportBundle\Controller\ImportControllerTrait;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class ImportController extends AbstractController implements ImportConfigurationAutoInjectInterface
{
use ImportControllerTrait;
use ImportConfigurationAutoInjectTrait;
/**
* @Route("/user/import", name="user_import")
*/
public function import(Request $request, ValidatorInterface $validator): Response
{
return $this->doImport($request, $validator);
}
/**
* @Route("/user/import/save", name="user_import_save")
*/
public function importSave(Request $request, TranslatorInterface $translator): Response
{
return $this->doImportSave($request, $translator);
}
protected function redirectToImport(): RedirectResponse
{
return $this->redirectToRoute('user_import');
}
protected function getMatrixSaveActionUrl(): string
{
return $this->generateUrl('user_import_save');
}
protected function getImportConfigurationClassName(): string
{
return UserImportConfiguration::class;
}
}
protected function getSelectFileTemplateName(): string
{
return 'your/path/to/select_file.html.twig';
}
protected function getMatrixEditTemplateName(): string
{
return 'your/path/to/edit_matrix.html.twig';
}
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' => '&',
]
),
];
}