Pole v komponentě a přístup z handlerů
- kleinpetr
- Člen | 480
Ahoj,
asi už jsem úplně mimo, ale co dělám špatně?
class MyControl extends UI\Control
{
private $array;
public function handleAdd(){
$file = $_FILES['file'];
$key = Strings::webalize($file['name']);
$this->array[$key] = $file;
}
public function handleRemove($key){
unset($this->array[$key]);
}
}
handlery potom volám ze šablony komponenty ajaxem, ale při volání remove! mi prostě napíše, že ten prvek v poli neni..
Editoval kleinpetr (20. 11. 2015 13:12)
- Michal Hlávka
- Člen | 190
Ahoj, protože když voláš signál Add a Remove, načte se komponenta vždy
separátně. Musíš si to pole persistentně uložit, dejme tomu třeba do
session storage Nette\Http\Session
- Michal Hlávka
- Člen | 190
Payload už máš předdefinovaný objekt, který plníš hodnotami ve stylu
$this->payload->nejakejJsonKlic = hodnotaKlice
a při
zavolání metody sendPayload vezme ten objekt, dá ho do Json formátu a ten ti
pak vrátí server. Pokud by jsi chtěl mít plnou kontrolu nad tím, co ti
vrací server, v našem případě plnou kontrolu nad Json formátem, tak se
používá sendResponse, kde ti vrátí server co prostě chceš.
$this->sendResponse(new JsonResponse(['nejakejJsonKlic' => 'hodnotaKlice'])
vs
$this->payload->nejakejJsonKlic = 'hodnotaKlice';
$this->sendPayload();
Editoval emptywall (20. 11. 2015 14:13)
- Michal Hlávka
- Člen | 190
if (!$this->presenter->isAjax()) { $array = []; }
Koukám, že jsi otázku smazal, odpověď ti tady ale nechám. :-)
Editoval emptywall (20. 11. 2015 14:40)