Přenos dat z formuláře do shrnutí
- kiCkZ
- Člen | 153
Ahoj,
Jakým způsobem by jste řešili tento problém:
Mam vytvořenou komponentu, ve které se odkazují na formulář a potřebuji jak po vytvoření tak při editaci potřebuji udělat udělat tzv. shrnutí a až poté dát možnost uložit do databáze, jak by jste toto řešili ?
Jde mi o ten přenos dat z formuláře do toho meziprostoru a až následné potvrzení na odeslání.
Dekuji mockrát
- kiCkZ
- Člen | 153
Ondřej Kubíček napsal(a):
uložení do session třeba ?
Supr a jakým způsobem to provést, momentálně se mi to vůbec nedaří :/
Zde mam můj presenter:
<?php
public function createComponentInvoiceForm() {
$form = $this->invoiceForm->create($this->id);
$form->onSuccess[] = function () {
$this->redirect('ReceivedInvoice:Summary');
};
return $form;
}
public function actionEdit($id) {
$this->id = (int)$id;
$invoice = $this->receivedInvoiceRepository->get($id);
if (!$invoice) {
$this->error('Faktura nebyla nalezena');
}
$this['invoiceForm']->setDefaults($invoice);
}
?>
Zde je formulář
<?php
public function create($id) {
$this->id = $id;
$form = $this->formFactory->create();
$year = [];
for ($i = 2017; $i <= date("Y", time()); $i++) {
$year[$i] = $i;
}
$form->addSelect('year','Rok',$year)
->setDefaultValue(date("Y", time()));
$form->addInteger('number', 'Pořadové číslo')
->setEmptyValue('Při nevyplnění bude doplněno automaticky');
$form->addSelect('customer_id', 'Dodavatel', $this->customerRepository->fetchPairs())
->setPrompt('Vyberte dodavatele')
->setRequired('Nebyl vybrán dodavatel');
$form->addText('receive_date', 'Datum přijetí faktury')
->setDefaultValue(date_format(new \DateTime(), 'd-m-Y'))
->setRequired('%label nebylo zadáno');
$form->addInteger('invoice_number', 'Číslo faktury')
->addRule(Form::MAX_LENGTH, '%label smí být dlouhé maximálně %d', 15)
->setRequired('%label nebylo vyplněno');
$form->addInteger('variable_symbol', 'Variabilní symbol')
->setRequired(false)
->addRule(Form::MAX_LENGTH, '%label může být dlouhý maximálně %d', 10)
->addCondition(Form::FILLED)
->addRule(Form::PATTERN, '%label musím obsahovat pouze číslice', '^\d+$');
// $form->addUpload('upload', 'Soubor s fakturou')
// ->addRule(Form::MIME_TYPE,'%label musí být ve formátu PDF.',['application/pdf'])
// ->setRequired('%label nebyl vybrán');
//
$form->addText('due_date', 'Datum splatnosti')
->setAttribute('placeholder','dd.mm.rrrr')
->setRequired('%label nebylo zadáno');
$form->addTextArea('subject', 'Předmět fakturace');
$form->addInteger('amount', 'Částka na faktuře')
->addRule(Form::PATTERN, '%label musím obsahovat pouze číslice (případně čárku)', '^-?\d+[.,]?\d+$')
->setRequired('%label nebyla vyplněna');
$form->addSelect('currency_id', 'Měna', $this->currencyRepository->fetchPairs())
->setPrompt('Vyberte měnu')
->setRequired('%label nebyla vybrána');
// $form->addMultiSelect('signed_users', 'Schvalující lidé');
$form->onSuccess[] = [$this,'summaryProcess'];
$form->addSubmit('send','Uložit');
return $form;
}
public function summaryProcess($form, $values) {
$session = $this->session->getSection('summerInvoice');
$session->data = $values;
}
?>
Vůbec se po pravdě nepochopil, jak to uložit do session z formuláře a následně to načíst v render metodě.