Přidaní registrace makra přes neon
- Filip Procházka
- Moderator | 4668
Protože určitě nepoužíváš vývojovou verzi. Vždyť jsem přece psal, že je to na vývojovou verzi ;)
Ve stable se to musí zatím dělat takto krkolomně.
services:
nette.latte:
setup:
- 'Zool\Macro\MyMacro::install(?->compiler)'(@self)
- zool
- Člen | 144
Máš pravdu nepoužívám. Když to dám do apostrofů, tak to bere jako php
kód že? Ale proč je tam na konci to self? Jo a ještě jeden dotaz ta
pomlčka funguje jako metoda že ve třídě (v jaké třídě? Compiler?)?
A když se tam neuvede tak je to constrokt? Nebo jak by se to dalo
pochopit??
Děkuji
Editoval zool (10. 12. 2012 18:33)
- Filip Procházka
- Moderator | 4668
Rozebereme si
services:
nette.latte:
setup:
- 'Zool\Macro\MyMacro::install(?->compiler)'(@self)
- Uvozovky jsou tam proto, aby to bral v celku a nerozděloval podle kontrolních znaků.
- Závorky vytváří instanci NeonEntity,
která dostane jako
$value
to co je před závorkami a do$attributes
dostane naparsované co je v závorkách (klidně i složité struktury) - Otazník v
NeonEntity::$value
znamená, že se má obsah zpracovávat jako PHP kód. - Každý jeden otazník znamená parametr, který se má místo něj doplnit.
@self
je refence na sebe sama.
Takže místo otazníku se doplní služba. Výsledný kód bude vypadat takto
// $service je lokální proměnná, ve které je instance právě vytvářené služby.
Zool\Macro\MyMacro::install($service->compiler);
Můžete si to zkusit i nechat naparsovat online.
- barbucha
- Člen | 11
Ahoj, pokouším se podle výše popsaného postupu zaregistrovat makra z Nextras\Forms
Do configu jsem tedy napsal
services:
nette.latte:
setup:
- 'Nextras\Forms\Latte\Macros::install(?->compiler)'(@self)
no a stale mi to generuje chybu
Nette\DI\ServiceCreationException
It is not allowed to use service and factory with the same name ‚nette.latte‘
Prosim, kde delam chybu?
Dik.
Editoval barbucha (30. 1. 2013 12:03)