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)