2017 © Pedro Peláez
 

library doctrine-forms

image

mpospiech/doctrine-forms

  • Tuesday, April 17, 2018
  • by michal-pospiech
  • Repository
  • 1 Watchers
  • 1 Stars
  • 39 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 5 Versions
  • 15 % Grown

The README.md

Doctrine Forms

Instalace

$ composer require mpospiech/doctrine-forms

Použití

Každý formulář musí být zaregistrován jako služba., (*1)

services:
    - App\Forms\BaseFormFactory
    - App\Forms\BaseFormChangeValuesFactory
    - App\Forms\BaseFormWithTemplateFactory

Vytvoření komponenty formuláře v presenteru

class FormPresenter extends \Nette\Application\UI\Presenter {
    /** @var BaseFormFactory @inject */
    public $baseFormFactory;

    /** @var DoctrineEntity */
    private $currentEntity; // pokud se ma jednat o update

    public function createComponentBaseForm() {
        $component = $this->baseFormFactory->create(DoctrineEntity::class, ($this->currentEntity ? $this->currentEntity->id : 0));

        $self = $this;
        $component->addAfterSuccess(function() use ($self) {
            $self->redirect('this');
        });

        $form = $component->getForm();

        $form->onSuccess[] = function(\Nette\Forms\Form $form, \Nette\Utils\ArrayHash $values) use ($self) {
            if ($values->id) {
                $self->flashMessage('Hodnoty formuláře byly úspěšně upraveny.', 'success');
            } else {
                $self->flashMessage('Hodnoty z formuláře byly úspěšně uloženy.', 'success');
            }
        };

        return $form;
    }
}

Základní formulář

class BaseFormFactory extends \mpospiech\Doctrine\Forms\FormFactory {
    public function setupForm(\Nette\Forms\Form $form) {
        $form->addText('name', 'Název'); // pokud neni null v databazi, tak bude nastaven jako required

        $form->addTextArea('description', 'Popis');

        $form->addText('date', 'Datum')
            ->setAttribute('placeholder', 'dd.mm.YYYY');
    }
}

Formulář se změnou hodnot před uložením

class BaseFormChangeValuesFactory extends \mpospiech\Doctrine\Forms\FormFactory {
    public function setupForm(\Nette\Forms\Form $form) {
        $form->addText('name', 'Název'); // pokud neni null v databazi, tak bude nastaven jako required

        $form->addTextArea('description', 'Popis');

        $form->addText('date', 'Datum');

        $this->onBeforeSuccess[] = [$this, 'change'];
    }

    public function change(\Nette\Utils\ArrayHash $values) {
        $values->date = \Nette\Utils\DateTime::createFromFormat('d.m.Y', $values->date); // do entity pro hodnotu date bude nyni odeslana instance DateTime
    }
}

Formulář s individuální šablonou

class BaseFormWithTemplateFactory extends \mpospiech\Doctrine\Forms\FormFactory {
    public function __construct(\Kdyby\Doctrine\EntityManager $entityManager, \Nette\Application\UI\ITemplateFactory $templateFactory)
    {
        parent::__construct($entityManager, $templateFactory);

        $this->setTemplate(__DIR__ . '/baseForm.latte', ['variable' => 'valueVariable']);
    }

    public function setupForm(\Nette\Forms\Form $form) {
        $form->addText('name', 'Název'); // pokud neni null v databazi, tak bude nastaven jako required

        $form->addTextArea('description', 'Popis');

        $form->addText('date', 'Datum')
            ->setAttribute('placeholder', 'dd.mm.YYYY');
    }
}

Šablona

{form $form}
    <div class="row">
        {label name /}
        <input n:name="name">
    </div>
    <div class="row">
        {label description /}
        <input n:name="description">
    </div>
    <div class="row">
        {label date /}
        <input n:name="date">
    </div>

    <div class="row">
        <input n:name="save">
    </div>
{/form}

Rozšířené nastavení formuláře

Nastavování jednotlivých formulářových komponent

// vypnute uložení hodnoty do databáze
$form->addText('name', 'nameValue')
    ->setOption('autoSet', false);

// vypnuté nastavení výchozí hodnoty
$form->addText('name', 'nameValue')
    ->setOption('setDefaultValue', false);

The Versions

17/04 2018

dev-master

9999999-dev

  Sources   Download

GPL-3.0 GPL-2.0 MIT License

The Requires

 

by Michal Pospiech

doctrine forms nette

17/04 2018

v1.1.2

1.1.2.0

  Sources   Download

GPL-3.0 GPL-2.0

The Requires

 

by Michal Pospiech

doctrine forms nette

17/04 2018

v1.1.1

1.1.1.0

  Sources   Download

GPL-3.0 GPL-2.0

The Requires

 

by Michal Pospiech

doctrine forms nette

17/04 2018

v1.1.0

1.1.0.0

  Sources   Download

MIT License

The Requires

 

by Michal Pospiech

doctrine forms nette

24/03 2018

v1.0.0

1.0.0.0

  Sources   Download

MIT License

The Requires

 

by Michal Pospiech

doctrine forms nette