sendResponse z komponenty
- Pirozek
- Člen | 11
Ahoj,
mozna to bude hloupy dotaz, ale co musim v komponente udelat, abych mohl
pouzivat fci sendResponse? Respektive JsonResponse? Snazim se vratit z handle
metody neco v JSONu, protoze to volam AJAXem a dostavam chybu
Fatal error: Class 'FrontModule\DemoModule\JsonResponse' not found
.
Moje fce vypada nejak takhle:
<?php
function handleLoad()
{
$this->loadSession();
$this->sendResponse(new JsonResponse(array('x'=>$this->session->x, 'y'=>$this->session->y)));
}
?>
Snazil jsem se pred polozenim dotazu neco aktivne najit. Procetl jsem v dokumentaci texty o AJAXu v Nette, o psani komponent atd a podle vseho by mi to melo jet. Nasel jsem i cast, ktera se zabyva payloadem, payload mi hlasi to same, co JsonResponse, tedy ze propertu payload to nezna.
Asi nejbliz co jsem na foru nasel je tenhle topik → https://forum.nette.org/…son-response ale i kdyz jsem zkusil co je v nem, stale se mi nedari dostat pres tu osklivou cervenou stranku s FATAL ERROR nahore :)
Co delam spatne? Unika mi nejaky detail, ale nemuzu ho najit :(
- 22
- Člen | 1478
píše to, že ta třída v tom namespace neexistuje:
Fatal error: Class 'FrontModule\DemoModule\JsonResponse' not found
budeš ji muset asi hledat jinde, buď doplň správný use
anebo použij správný namespace:
new Nette\Application\Responses\JsonResponse();
Editoval 22 (7. 7. 2011 14:35)
- Pirozek
- Člen | 11
Jo, to me napadlo, jenze i kdyz tam doplnim
use Nette\Application\Responses;
, tak porad rve jak zavalenej
hornik, ze to JsonResponse nezna. Tak jsem ho zkusil vytvorit takhle
new \Nette\Application\Responses\JsonResponse(array('x'=>$this->session->x, 'y'=>$this->session->y))
.
To uz sice nerve jak zavalenej hornik, ale porad tvrdi, ze nezna
sendResponse
.
Co na tom delam spatne nebo nechapu?
- Pirozek
- Člen | 11
To jsem si nasel tady https://api.nette.org/…tion.UI.html,
je to namespace Nette\Application\UI
, takze pokud napisu do
zdrojaku use Nette\Application\UI;
, mel bych byt schopen tu fci
pouzit. Nejde. Tak jsem zkusil primo
\Nette\Application\UI\sendResponse(new \Nette\Application\Responses\JsonResponse(array('x'=>$this->session->x, 'y'=>$this->session->y)));
.
Taky ne. Ackoliv ta funkce tam prokazatelne je. Stale to ale tvrdi
Call to undefined function Nette\Application\UI\sendResponse()
.
Nebude to nejakej problem v tom, ze je to v te komponente?
- Filip Procházka
- Moderator | 4668
V každé komponentě, která vychází z PresenterComponent
,
je přístupná metoda ->getPresenter()
, která vyhledá
rodiče, který je instancí třídy Presenter
. Čili můžeš mít
i více komponent v sobě a pořád to bude fungovat. A protože
Nette\Object
ti dovoluje k metodám, co začínají na
get
, přistupovat bez get
, tak můžeš volat
$this->presenter
:)