Překreslení snippetu v komponentě přes vlastní presenter

Damo
Člen | 60
+
0
-

Koukám do docu, ale nejsem z toho moc chytry, jde mi hlavne o to, ze link mi vytvari url na jiny presenter nez chci, a donutit ho jaksi nejde, mám to udělaný funkčně, ale celý je to hrozně krkolomný. Určitě to jde nějak lépe. Poradíte?
Jde o web zalozeny na naja.

mám komponentu filesExplorer, ktera ruzne zanoruje latte do sebe a jedno z nich je snippet dataFileDetails.

celou tu komponentu ovlada javascript

{block #filesExplorer}
    <div
            class="{$className}"
            id="fileExplorer{$unique}"
            data-component="{$componentName}"
    >
        <div class="row g-3 flex-between-center">
			...
			...
			...
                            {include detail.latte}
			...
			...
			...
        </div>
    </div>


    <script>
        $(function() {
            $("#fileExplorer" + {$unique}).extendedFileExplorer({
                detailHref: {$presenter->link('Files:detail', [
                'do' => "{$control->name}-showDetails",
                'id' => "ID_PLACEHOLDER"
                ])}
            });
        });
    </script>
{/block}

v extendedFileExplorer (js soubor)

mám pak volaní naja ajax ve valstní komponenete, ale to je jedno, dulezite je to
ze aktualne to zavola hezky

/admin/files/detail/77?do=phoenixFilesExplorer-showDetails

$.fn.mcNajaAjax('GET', options.detailHref.replaceAll("ID_PLACEHOLDER", selectedFiles[0]), null, {
                    forceRedirect: true
                });

Ta url mne nasmeruje na Presenter Files v AdminModule na action detail

Ovsem ta action ma dummy latte, ktera vlstbně nic nedela, pak to preskoci na komponentu do handle showDetails


    public function actionDetail(): void {
        $this->template->setFile($this->template->templatePath . "/Website/Files/dummy.latte");
    }

pak to preskoci do handle v komponente

    public function handleShowDetails(): void {
        $this->template->setFile(dirname(__FILE__) . "/detail.latte");

        $this->template->id = $this->getPresenter()->getParameter('id');
        $this->redrawControl('dataFileDetails');
    }

jde mi o to generovani url

kdyz pouziji

$control->showDetails!

tak mi vytvori url /admin?do.......

a v presenteru Admin to pak musi zpracovat cely actionDefault, což jaksi nechci

Otazka tedy, lze nejak dobre vygenerovat nejaky url na /admin/files/detail/<id> a to nejak preskoci na ten handle v komponente

protoze kdyz bych vratil rovnou controlRedraw() primo v action ve FilesPresneter tak on mi posle snippet bez vyplnene komponenty tedy

snippet--dataFileDetails

namísto

snippet-filesExplorer-dataFileDetails

Editoval Damo (6. 9. 22:51)

Damo
Člen | 60
+
0
-

Tak vyřešeno, špatná posloupnost latte. A měl jsem tam forwarding, takze proto se to generovalo z jineho presenteru.