Odkaz na akci ve formuláři

kiCkZ
Člen | 153
+
0
-

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

CZechBoY
Člen | 3608
+
0
-
$form->setAction(...);

Editoval CZechBoY (3. 4. 2018 18:09)

kiCkZ
Člen | 153
+
0
-

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)

CZechBoY
Člen | 3608
+
0
-

jo ty chces dalsi odesilaci tlacitko? ja jsem myslel ze chces jen zmenit akci toho formulare…

kiCkZ
Člen | 153
+
0
-

CZechBoY napsal(a):

jo ty chces dalsi odesilaci tlacitko? ja jsem myslel ze chces jen zmenit akci toho formulare…

Přesně tak, potřebuji tlačítko s odesláním na akci / komponentu jiného presenteru.

Editoval kiCkZ (4. 4. 2018 9:36)

duke
Člen | 650
+
0
-

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)

kiCkZ
Člen | 153
+
0
-

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
+
0
-

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
+
0
-

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.