Jak na vlastni ILatteFactory
- matopeto
- Člen | 395
Zdravim v inom vlakne (https://forum.nette.org/…tml-a-opacne)
som riesil problem, ktory viacmenej vyzaduje custom implementaciu
ILatteFactory
(s vlastnymi property, ktore sa nastavia v startupe
a tie sa potom vyuziju k nastavovaniu Latte Engine), nejako sa mi nedari to
v configu nasrubovat aby sa pouzivala ta moja. Poradi niekto ako to spravne
zapisat? Pripadne ak by niekoho napadlo riesenie povodneho problemu inak?
Definoval som si vlastnu classu:
class MyLatteFactory implements \Nette\Bridges\ApplicationLatte\ILatteFactory {
/**
* @return Latte\Engine
*/
function create()
{
// TODO
return new Latte\Engine;
}
}
v konfigu som skusal rozne veci napr.:
services:
latte.latteFactory:
class: \Latte\Engine
implement: \Nette\Bridges\ApplicationLatte\ILatteFactory
create: \MyLatteFactory
Co ale vedie k chybe:
https://dl.dropboxusercontent.com/…14.09.39.png
Takze to vyzera, ze sa sluzba neprepise cela (stale tam ostava ten setup a spol)
Editoval matopeto (9. 1. 2017 14:10)
- matopeto
- Člen | 395
Bohuzial ale v 2.4 hadze notice:
Non-static method MyLatteFactory::create() should not be called statically, assuming $this from incompatible contex
Generovany kod na ktorom je chyba je:
...
public function create()
{
$service = \MyLatteFactory::create();
if (!$service instanceof Latte\Engine) {
throw new Nette\UnexpectedValueException('Unable to create service \'latte.latteFactory\', value returned by factory is not Latte\Engine type.');
}
...
Ako zapisat generovanie „nestatickej“ factory?
- CZechBoY
- Člen | 3608
Hm, tak tu třídu přidej jako službu a do továrny zkus odkázat na tu službu.
services:
- App\MyLatteFactory
latte.latteFactory:
class: Latte\Engine
create: @App\MyLatteFactory::create
implement: Nette\Bridges\ApplicationLatte\ILatteFactory
Což mi připomíná problém s RouterFactory, takže by to šlo asi udělat stejně krátce?
- App\MyLatteFactory
latte.latteFactory: @App\MyLatteFactory::create
Editoval CZechBoY (9. 1. 2017 16:43)