addDynamic editace záznamů
- quiced
- Člen | 85
Zdravím,
aktuální řeším problém s doplňkem addDynamic, a to konkrétně přidávání a mazání řádků během editace.
Nejdříve jsem se podle dokumentace pokusil vyřešit mazání jednotlivých řádků tak, aby při stisknutí tlačítka smazat, smazal řádek z databáze.
$container->addSubmit('remove', 'Smazat')
->addRemoveOnClick(callback($this, 'deleteProduct'));
}, 1);
public function deleteProduct(Kdyby\Replicator\Container $replicator, Container $product){
$id = $product->id;
$this->repository->getProductTable()->where('id', $id)->delete();
}
Bohužel mi nette vyhodí chybu
Undefined variable: this
a bohužel jsem nepřišel na funkční variantu.
Dále bych chtěl poprosit o radu, jak udělat to když chci při editaci přidat nový řádek a zároveň ho uložit do databáze.
Zde mám část, která aktualizuje řádky, které se načtou z databáze, bohužel jak jsem psal nevím jak udělat to, aby se v případě přidání nového řádku vytvořil nový záznam v databázi.
foreach($editform['editproducts']->values as $productId => $product){
$update = $this->repository->getProductTable()->get($productId);
$update->update(array(
'name' => $product['name'],
'type' => $product['type'],
'price' => $product['price'],
));
}
Díky všem za pomoc.
- llook
- Člen | 407
Undefined variable: this
Hádám, že uvnitř anonymní funkce a v PHP 5.3, protože tam není
k dispozici $this
ze scopy definující metody a ani se nedá
přímo přidat přes use
. Obchází se to nějak takhle:
$that = $this;
$form->addDynamic('users', function (Container $user) use ($that) {
// A tady pak místo $this použiješ $that.
}
Jinak já addDynamic obvykle používám tak, že data v databázi upraví až po odeslání formuláře (onSuccess).
- quiced
- Člen | 85
llook napsal(a):
Undefined variable: this
Hádám, že uvnitř anonymní funkce a v PHP 5.3, protože tam není k dispozici
$this
ze scopy definující metody a ani se nedá přímo přidat přesuse
. Obchází se to nějak takhle:$that = $this; $form->addDynamic('users', function (Container $user) use ($that) { // A tady pak místo $this použiješ $that. }
Jinak já addDynamic obvykle používám tak, že data v databázi upraví až po odeslání formuláře (onSuccess).
Myslíš, že by jsi mi mohl napsat, tvoje řešení tohoto problému ? Díky