Odkaz na akci ve formuláři
- kiCkZ
- Člen | 153
Zdravím,
chtěl bych se zeptat, jakým způsobem řešít odkazy ve formulářích pokud nemáte manuální vykreslování.
Potřebuji vytvořit odkaz na akci jiného presenteru, ale zatím se mi to
nepodařilo nijak vyřešit, jediné co mi
fungovalo bylo tlačítko addButton a poté v latte nastavit pomocí jQuery
click funkci, ale v editaci mi to
přestalo fungovat, bylo to funkční jen při prvním vytváření
záznamu.
Máte nějaké lepší řešení, které je „best practise“.
Děkuji
- kiCkZ
- Člen | 153
CZechBoY napsal(a):
$form->setAction(...);
Nevíš proč mi to nevezme tuto podobu:
<?php
public function createComponentInvoiceForm()
{
$form = $this->invoiceForm->create($this->id, $this->link('Customer:customerForm'));
$form->onSuccess[] = function () {
$this->redirect('summary', $this->id);
};
return $form;
}
?>
<?php
$form->setAction($link)
->addButton('new_customer','Nový zákazník')
->setAttribute('class','right pull-right')
->setOmitted();
?>
Editoval kiCkZ (4. 4. 2018 8:48)
- kiCkZ
- Člen | 153
duke napsal(a):
Co ti brání prostě přesměrovat na jinou akci jiného presenteru z metody, která se volá při odeslání formuláře? (např. podle toho, přes jaké tlačítko k odeslání došlo)
Jenomže já nepotřebuji po odeslání formuláře něco dělat, v tom problém není.
Mam formulář a uprostřed něho mam tlačítko, které chci odkazovat na jiný formulář.
Ukázka:
Tlačítko new_customer potřebuji odkazovat na jiný formulář
k založení nového zákazníka.
Nechci mít manuální vykreslení, tak zda to nějak jde vyřešit.
<?php
$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', 'Zákazník', $this->customerRepository->fetchPairs())
->setPrompt('Vyberte zákazníka')
->setAttribute('id','js-search-select2')
->setAttribute('class','customer_id')
->setRequired('%label nebyl vybrán');
$form->addButton('new_customer','Nový zákazník')
->setAttribute('class','right pull-right')
->setOmitted();
$form->addText('receive_date', 'Datum přijetí faktury')
->setType('date')
->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')
->setType('date')
->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('approve_user_id', 'Schvalující lidé', $this->userRepository->fetchPairs())
->setRequired('Nebyl vybrán nikdo na schválení');
$form->addSubmit('send', 'Uložit');
?>
- duke
- Člen | 650
Takže ti jde jen o to umístit odkaz (který bude vypadat jako button) do rendererem generovaného formuláře?
Na to je skutečně nejlepší manuální renderování. Pokud trváš na řešení pomocí rendereru, budeš si asi muset za tím účelem napsat vlastní formulářový control, který vždy jen vygeneruje html daného odkazu.
- kiCkZ
- Člen | 153
duke napsal(a):
Takže ti jde jen o to umístit odkaz (který bude vypadat jako button) do rendererem generovaného formuláře?
Na to je skutečně nejlepší manuální renderování. Pokud trváš na řešení pomocí rendereru, budeš si asi muset za tím účelem napsat vlastní formulářový control, který vždy jen vygeneruje html daného odkazu.
Přesně to potřebuji, takže jediná cesta je napsat si control.
Škoda, myslel jsem si, že to jde lépe no.