Matoucí PHP User Warning: Invalid link: Missing parameter $timestamp

m.brecher
Generous Backer | 863
+
0
-

Ahoj,

Plánuji komponentu, která by měla po javascriptové události odeslat ajaxem timestamp na server a zapsat jej do databáze.

Komponenta obslouží ajax požadavek ovladačem handleExport():

class DocumentControl extends Control
{

    public function handleExport(string $timestamp)
    {

    }

    public function renderScript()
    {
        $this->template->render(__DIR__.'/documentControl.script.latte');
    }
}

Url a jméno parametru pro javascript vykreslí documentControl.script.latte:

<script src="{$basePath}/js/app/DocumentControl.js"></script>

<script>
    documentControl.init({link 'export!'}, {$control->getParameterId('timestamp')})
</script>

Bohužel Nette vyhazuje kvůli {link ‚export!‘} warning:

PHP User Warning: Invalid link: Missing parameter $timestamp....

Warning se vyhodí i když přesuneme tvorbu url dovnitř komponenty:

class DocumentControl extends Control
{
   // ...

    public function renderScript()
    {
        $this->template->url = $this->link('export!');
        $this->template->parameterId = $this->getParameterId('timestamp');
        $this->template->render(__DIR__.'/documentControl.script.latte');
    }
}

Warning nedává smysl, protože signál se bude vyvolávat čistě javascriptem a javascript potřebuje url signálu a jméno parametru odděleně. Warning mě nutí, abych přidal do {link …} parametr signálu – jenže v javascriptu je potřeba url signálu bez parametru.

Máte nějaké zkušenosti, nebo nápady, jestli má tato situace nějaké řešení – jak potlačit nežádoucí warning ??

m.brecher
Generous Backer | 863
+
0
-

Zatím jsem to vyřešil takhle:

<script>
    documentControl.init({link 'export!', timestamp: null}, {$control->getParameterId('timestamp')})
</script>

Kevas
Člen | 12
+
+1
-
public function handleExport(?string $timestamp=null)
{
}