Update entity (Doctrine) pomocí ajaxu na onchange
- Alis
- Člen | 7
Ahoj, přijde mi, že chci udělat úplně jednoduchou věc, ale stále nevím jak na to. Začala jsem používat Doctrine 2 na práci s Entitami. Snažím se vypsat tabulku, ve které jdou položku editovat kliknutím na ně. Potřebovala bych si nějak předávat pomocí ajaxu objekt entity, který upravuji + další parametry (např. o jaký se jedná sloupec).
řádek tabulky:
<td><input n:if="isset( $value['input']) && $value['input']" onchange="saveItem(this.value,{$value[ 'entity' ]}, this); return false;" name={$value['name']} type={$value['type']} value={$value['value']} >
{* v $value['entity'] mam entitu (objekt) Rozvrh *}
<script>
function saveItem(value, objektRozvrh, element) {
var name = $(element).attr("name");
var data = {};
data['name'] = name;
data['value'] = value;
data['objekt'] = objekt; // potrebuji si ten objekt nekam ulozit
$.nette.ajax({
type: 'GET',
url: {link zmenitPromennou!},
data: data,..
}});
</script>
pak v presenteru potřebuji umět nějak ty data zpracovat
<?php
public function handleZmenitPromennou( $data) {
// tady bych uz chtela ten objekt mit
Rozvrh $rozvrh = $data['objekt'];
$rozvrh->$data['name'] = $data['value']; // tady bych chtela updatnou dany sloupec, ktery mi prisel v parametrech
$this->em->flush(); // potvrdit zmeny
...
}
?>
Potřebuji nějak dostat ten objekt abych ho pak mohla updatnout, jak jde vidět z ukázky. Možná na to jdu úplně špatně.
Prosím o každou radu!
- Alis
- Člen | 7
To bych mohla taky udělat, jen jsem v té tabulce chtěla používat více entit, proto pak to zobecnění.
Pokud to udělám tak jak píšeš, jak pak updatnu daný sloupec předaný v parametru?
<?php
$rozvrh = $this->em->find(Rozvrhy::class, $id);
$rozvrh->$data['name'] = $data['value']; // takto mi to nefunguje
$this->em->flush(); // potvrdit zmeny
?>
- lightteka
- Backer | 17
MajklNajt napsal(a):
Alis napsal(a):
Aha, takt to jde, jen je potřeba to dát do jiné proměnné
<?php $name = $data['name']; $rozvrh->$name = $data['value']; ?>
aha ano.. alebo by stačilo
<?php $rozvrh->($data['name']) = $data['value'] ?>
Mely by tam byt „chlupaty“ zavorky, tedy
$rozvrh->{$data['name']} = ...