Multiplier a notice, chyba v názvu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Johnczek
Člen | 37
+
0
-

Zdravím, chci použít multiplier a ručně vykreslovaný formulář.

Takto to je v šabloně

<div class="col-1">{form changeAmount-$basketItem['article']->getId()}<input name="amount" type="number" value="{$basketItem['amount']}" class="form-control">{/form}</div>

A takto v presenteru

protected function createComponentChangeAmount() {
    return new Multiplier(function ($productId) {
        $form = new Form;
        $form->addProtection('Platnost formuláře vypršela! Zkuste to prosím znovu.');
        $form->addHidden('articleId', $productId);
        $form->onSuccess[] = [$this, 'addReviewSucceeded'];
        return $form;
    });
}

public function ChangeAmountSucceeded(Form $form) {
    $data = $form->getHttpData();
    $productId = $data['productId'];
    $amount = $data['amount'];

    ... bla bla
}

Hlásí mí to nejprve notice *PHP Notice: Use of undefined constant changeAmount – assumed ‚changeAmount‘ in …\templates-Order-default.latte–809434283e.php:70
*
Když ji odignoruji tak to píše že component s názvem –1 neexistuje. (asi kvůli tomu že product id je 1 + ta pomlčka předtím- uplně se odignoruje to changeAmount) Nevíte někdo proč se tak děje?

David Matějka
Moderator | 6445
+
0
-

ahoj, takhle slozite vyrazy v

{form changeAmount-$basketItem['article']->getId()}

bohuzel podorovane nejsou. zkus, jestli nebude nahodou fungovat:

{form changeAmount-{$basketItem[article]->getId()}}

jestli ne, tak si to nejdrive dej do nejake pomocne promenne:

{var $id = $basketItem['article']->getId()}
{form changeAmount-$id}
Johnczek
Člen | 37
+
0
-

David Matějka napsal(a):

ahoj, takhle slozite vyrazy v

{form changeAmount-$basketItem['article']->getId()}

bohuzel podorovane nejsou. zkus, jestli nebude nahodou fungovat:

{form changeAmount-{$basketItem[article]->getId()}}

jestli ne, tak si to nejdrive dej do nejake pomocne promenne:

{var $id = $basketItem['article']->getId()}
{form changeAmount-$id}

Ahoj, děkuji za bleskovou odpověď.
Funguje druhá varianta (uložení do proměnné). U první varianty to hlásí syntax error na unexpected složené závorce. (To spíše pro další programátory kteří by řešili podobný problém)