inspiredminds/contao-backend-forms

Extension to Contao Haste for quick creation of back end forms.

Fund package maintenance!
fritzmg

Installs: 5 799

Dependents: 3

Suggesters: 0

Security: 0

Stars: 2

Watchers: 3

Forks: 2

Open Issues: 0

Type:contao-bundle

pkg:composer/inspiredminds/contao-backend-forms

1.1.0 2025-09-23 12:11 UTC

README

Contao Backend Forms

Extension of Codefog\HasteBundle\Form\Form of codefog/contao-haste to quickly build a form for the back end.

Example

Create the form like a regular Haste Form, just via the BackendForm class in your back end controller for example:

// src/Controller/MyFormController.php
namespace App\Controller;

use Contao\CoreBundle\Controller\AbstractBackendController;
use InspiredMinds\ContaoBackendFormsBundle\Form\BackendForm;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

#[Route('%contao.backend.route_prefix%/my-form', name: self::class, defaults: ['_scope' => 'backend'])]
class MyFormController extends AbstractBackendController
{
    public function __invoke(Request $request): Response
    {
        $form = new BackendForm('my-form', 'POST');

        $form->addFormField('lorem', [
            'label' => ['Lorem', 'Lorem description.'],
            'inputType' => 'text',
            'eval' => ['tl_class' => 'w50', 'maxlength' => 255],
        ]);

        $form->addFormField('ipsum', [
            'label' => ['Ipsum', 'Ipsum description.'],
            'inputType' => 'text',
            'eval' => ['tl_class' => 'w50', 'maxlength' => 255],
        ]);

        $form->addSubmitFormField('Submit');

        if ($form->validate()) {
            // Do something …

            return new RedirectResponse($request->getUriForPath($request->getPathInfo()));
        }

        return $this->render('my-form.html.twig', [
            'title' => 'My form',
            'headline' => 'My form',
            'form' => $form,
        ]);
    }
}
{# templates/my-form.html.twig #}
{% extends "@Contao/be_main" %}

{% block main_content %}
    {{ form.generate()|raw }}
{% endblock %}

This would then render a form like this: