JSONRpc2 icon indicating copy to clipboard operation
JSONRpc2 copied to clipboard

Nette database

Open rumcais opened this issue 5 years ago • 1 comments

Potřeboval bych poradit jak použít jsonrpc2 s nette database. Na jiném projektu jsem používal knihovnu dibi. A s tou to fungovalo bez problému. Můj příklad:

$server = new \Lightbulb\Json\Rpc2\Server; $server->situace = new SituaceHandler($this->kategorieModel); class SituaceHandler { public $kategorieModel; function __construct($kategorieModel) { $this->kategorieModel=$kategorieModel; } public function sendAllCategory() { $retval=$this->kategorieModel->getAllData()->order('position')->fetchAssoc('id'); $ret = new \stdClass(); $ret->result=$retval; return $ret; }

Server mi vrací: response: { jsonrpc : 2.0, error : { code : 0, message : fopen(/app/src/app/../temp/cache/_Nette.Database.f9984012521578c37f8a2419fc007bbe/_48509200295bca30224e85dbd33b9614): failed to open stream: No such file or directory\nin file /app/src/vendor/nette/caching/src/Caching/Storages/FileStorage.php\non line 298 }, id : 0 }

rumcais avatar Apr 20 '20 16:04 rumcais

To není problém Nette Database, ale problém toho, že Nette Database využívá Nette\Caching\Storages\FileStorage, kde je oteviraní neexistujícího souboru ošetřeno pomocí tzv. error-control operatoru @

Viz na: https://github.com/nette/caching/blob/be02f7e597c61484cf75735370d2a3836984c82f/src/Caching/Storages/FileStorage.php#L298

Aby toto potlačení chyby fungovalo i ve vlastním error handleru, měla by v něm být tato řádka: if (error_reporting() === 0) { return false; }

zabous avatar Apr 21 '20 10:04 zabous