1. Go to this page and download the library: Download digivia/form-handler 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/ */
digivia / form-handler example snippets
// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = [
// ...
new Digivia\FormHandler\DigiviaFormHandlerBundle()
];
// ...
}
// ...
}
use Digivia\FormHandler\Contract\Form\FormWithHandlerInterface;
use App\FormHandler\TestFormHandler;
/**
* Class FormTestType
* @package Digivia\Tests\HandlerFactory\TestSet\Form
*/
class FormTestType extends AbstractType implements FormWithHandlerInterface
{
public static function getHandlerClassName(): string
{
// Here add your form handler
return TestFormHandler::class;
}
/**
* @inheritdoc
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
// here add your form field - see Symfony doc
}
/**
* @inheritdoc
*/
public function configureOptions(OptionsResolver $resolver)
{
// Form configuration - see Symfony doc
}
}
namespace App\FormHandler\TestFormHandler;
use App\Form\MyFormType;
use Digivia\FormHandler\Handler\AbstractHandler;
class TestFormHandler extends AbstractHandler
{
protected function process($data, array $options): void
{
// your business logic in case of successful form submitting
// ie : Doctrine persisting, messenger, mail...
}
}
public function edit(HandlerFactoryInterface $factory, Request $request, Post $post) : Response
{
// Instanciate form handler and gives him your form type class name
$handler = $factory->createFormWithHandler(FormTestType::class);
// Give data to work with and options to form / handler
$handler->setData($post); // Optionally, set entity to work with to the form
// Return Response after treatment
return $handler->handle(
$request,
// Callable used in case of form submitted with success
function (Post $post) use ($request) {
return $this->redirectToRoute('post_show', ['id' => $post->getId()]);
},
// Callable used in case of non-submitted form, or submitted but not valid
function (FormView $formView, $data) {
return $this->render('conference/edit.html.twig', [
'form' => $formView,
'post' => $data
]);
}
);
}
// Instanciate form handler
$handler = $factory->createFormWithHandler(FormTestType::class);
// Give data to work with and options to form / handler
$handler->setFormOptions(['validation_groups' => false]); // Optionally, add form type options if you need
// will be sent to $options in FormType :
FormFactory::create(string $type = 'Symfony\Component\Form\Extension\Core\Type\FormType', $data = null, array $options = [])
// Process extra parameters is fourth parameter
$handler = $factory->createFormWithHandler(FormTestType::class);
// Give data to work with and options to form / handler
$handler->setExtraParams(['form_creation' => true]); // Optionally, add form type options if you need
// will be sent to $options in this Form Handler method :
protected function process($data, array $options): void
public function edit(HandlerFactoryInterface $factory, Request $request, Post $post) : Response
{
// Instanciate form handler
$handler = $factory->createFormWithHandler(FormTestType::class);
// Give data to work with and options to form / handler
$handler->setData($post); // Optionally, set entity to work with to the form
// Return Response after treatment
return $handler->handle(
$request,
// Callable used in case of form submitted with success
function (Post $post) use ($request) {
// 🔥 If you uses Turbo 🔥
if (TurboStreamResponse::STREAM_FORMAT === $request->getPreferredFormat()) {
// If the request comes from Turbo, only send the HTML to update using a TurboStreamResponse
return $this->render(
'post/success.stream.html.twig',
['post' => $post],
new TurboStreamResponse()
);
}
return $this->redirectToRoute('post_show', ['id' => $post->getId()]);
},
// Callable used in case of non-submitted form, or submitted but not valid
function (FormView $formView, $data) {
return $this->render('conference/edit.html.twig', [
'form' => $formView,
'post' => $data
]);
}
);
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.