1. Go to this page and download the library: Download jmf/crud-engine-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/ */
use Jmf\CrudEngine\Controller\Helpers\CreateActionHelperBase;
use Override;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\Request;
/**
* @extends CreateActionHelperBase<Article>
*/
class ArticleCreateActionHelper extends CreateActionHelperBase
{
/**
* Instantiate the new entity. The base does `new $entityClass()`; override only if the
* entity needs constructor arguments. (The zero-config default uses the Doctrine Instantiator.)
*/
#[Override]
public function createEntity(Request $request, string $entityClass): object
{
return new Article();
}
/**
* Called before the entity is persisted.
*/
#[Override]
public function hookBeforePersist(Request $request, object $entity, FormInterface $form): void
{
// e.g. set timestamps, assign an owner
}
/**
* Extra variables passed to the template.
*/
#[Override]
public function getViewVariables(Request $request, object $entity): array
{
return [];
}
}
use Jmf\CrudEngine\Controller\Helpers\UpdateActionHelperBase;
use Override;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\Request;
/**
* @extends UpdateActionHelperBase<Article>
*/
class ArticleUpdateActionHelper extends UpdateActionHelperBase
{
/**
* Called before the updated entity is persisted.
*/
#[Override]
public function hookBeforePersist(Request $request, object $entity, FormInterface $form): void
{
// e.g. bump an "updated at" timestamp
}
/**
* Extra variables passed to the template.
*/
#[Override]
public function getViewVariables(Request $request, object $entity): array
{
return [];
}
}
use Doctrine\Persistence\ObjectManager;
use Jmf\CrudEngine\Controller\Helpers\IndexActionHelperBase;
use Override;
use Symfony\Component\HttpFoundation\Request;
/**
* @extends IndexActionHelperBase<Article>
*/
class ArticleIndexActionHelper extends IndexActionHelperBase
{
/**
* Return a custom collection. The base does `getRepository($entityClass)->findAll()`.
*/
#[Override]
public function getEntities(Request $request, string $entityClass, ObjectManager $objectManager): iterable
{
return $objectManager->getRepository($entityClass)->findBy(['published' => true]);
}
#[Override]
public function getViewVariables(Request $request): array
{
return [];
}
}
use Jmf\CrudEngine\Controller\Helpers\ReadActionHelperBase;
use Override;
use Symfony\Component\HttpFoundation\Request;
/**
* @extends ReadActionHelperBase<Article>
*/
class ArticleReadActionHelper extends ReadActionHelperBase
{
#[Override]
public function getViewVariables(Request $request, object $entity): array
{
return [];
}
}
use Jmf\CrudEngine\Controller\Helpers\DeleteActionHelperBase;
use Override;
use Symfony\Component\HttpFoundation\Request;
/**
* @extends DeleteActionHelperBase<Article>
*/
class ArticleDeleteActionHelper extends DeleteActionHelperBase
{
#[Override]
public function hookBeforeRemove(object $entity): void
{
// e.g. guard against deleting a referenced entity
}
#[Override]
public function getViewVariables(Request $request, object $entity): array
{
return [];
}
}
yaml
jmf_crud_engine:
schema:
keys:
# Drop pluralization: route paths become "article/..." instead of "articles/...".
entitydashkeys: "{{ entityClass|u.afterLast('\\\\').kebab }}"
# Add a custom key, usable as "{{ EntityTitle }}" in any pattern below.
# "App\Entity\BlogPost" -> "Blog Post"
EntityTitle: "{{ entityClass|u.afterLast('\\\\').snake.replace({'_': ' '}).title(true) }}"
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.