#1 před 4 měsíci
- David Grudl
- Administrator

- Registrovaný: 8. 2. 2005
- Příspěvky: 5835
NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Aktuální informace jsou udržovány v dokumentaci.
Drtivou většinu parametrů Nette Frameworku lze nyní ovlivnit pomocí
konfiguračního souboru. Konfigurace se zapisuje do sekce nette,
ta se nachází pod hlavní sekcí common (pokud ji
používáte):
Sessions
Lze nastavovat všechny PHP direktivy (ve
formátu camelCase). Nastavení autoStart na hodnotu
smart automaticky nastartuje již vytvořenou session, doporučil
bych používat.
nette:
session:
autoStart: true # výchozí je false
expiration: +10days
name: ...
...
Application
nette:
application:
debugger: true # panel v bluescreen
catchExceptions: ...
errorPresenter: ...
Routování
Tohle je zatím spíše experimentální záležitost.
nette:
routing:
debugger: true # panel v Debugger baru
routes:
index.php: Dashboard:default
'<presenter>/<action>[/<id>]': Dashboard:default
Security
Uvedením pole users vytvoříme SimpleAuthenticator, uvedením
polí roles nebo resources vytvoříme autorizátor
Nette\Security\Permission.
nette:
security:
debugger: true # panel v Debugger baru
frames: ... # hodnota hlavičky X-Frame-Options
users:
frantisek: tajneheslo
roles:
guest:
member:
admin: [member] # admin dědí od membera
resources:
file:
Maily
Standardní mailer je SendmailMailer, uvedením smtp aktivujeme
SmtpMailer.
nette:
mailer:
smtp: ...
# dále lze uvést host, port, username, password, secure, timeout
Pro vytvoření emailové zprávy můžeme použít
$container->nette->createMail().
Databáze
Můžeme vytvořit více připojení, které uvedeme pod klíčem
database. Takto vytvoříme spojení nazvané default
a dostupné pod $container->nette->database->default.
nette:
database:
default:
dsn: "sqlite2:%appDir%/models/demo.db"
user: ...
password: ...
options: [PDO::MYSQL_ATTR_COMPRESS = true]
debugger: false # panel v Debugger baru
explain: false # explain dotazů v Debugger baru
reflection: discovered # nebo conventional nebo název třídy
Framework tak vytvoří nejen objekt Nette\Database\Connection,
ale nastavují mu i pomocné objekty jako reflection & cache a ve
vývojářském režimu přidá panel do Debugger baru.
V rámci konfiguračního souboru se můžeme ke službě dostat přes
autowiring (@Nette\Database\Connection), přes název služby
(@nette.database.default) nebo si vytvořit alias a ten
používat:
services:
database: @nette.database.default
authorizator: Auth(@database)
Formuláře
V konfiguračním souboru lze změnit výchozí chybové hlášky.
nette:
forms:
messages:
EQUAL: 'Please enter %s.'
FILLED: 'Please complete mandatory field.'
MIN_LENGTH: 'Please enter a value of at least %d characters.'
Pro vytvoření formuláře vhodného pro použití mimo presentery můžeme
použít $container->nette->createBasicForm().
Šablony
Lze přepínat HTML a XHTML režim šablon:
nette:
xhtml: no # výchozí je true
Základní nakonfigurovanou šablonu s helpery a Latte vyrobí
$container->nette->createTemplate().
DI
nette:
container:
debugger: true # aktivuje panel v Debugger baru
Debugger
Lze konfigurovat některé parametry Nette\Diagnostics\Debugger
a nastavovat panely do Debugger baru.
nette:
debugger:
email: %webmasterEmail%
strictMode: TRUE
editor: ...
browser: ...
bar: [IncludePanel, XDebugHelper('myIdeKey') ]
blueScreen: [] # panely do blue-screen obrazovky
Cache
Objekt pro přístup ke keši vyrobí
$container->nette->createCache($namespace = NULL).
Low-level úpravy
Všechny tyto nastavení ovlivňují podobu výsledného systémového DI
kontejneru. Oproti přímému zápisu do sekcí services či
factories nabízejí srozumitelnější a stručnější syntax.
Nicméně zůstává možnost si jednotlivé služby ještě „doladit“ na
nižší úrovni:
services:
nette.mailer:
class: MySmtpMailer
factories:
nette.mail:
setup:
- addHeader('X-Mailer', 'Nette Framework 2.0')
Nebo vytvořit nové služby poděděním existujících: (přidá metodu
$container->createSecuredForm())
factories:
securedForm < nette.basicForm:
setup:
- addProtection()
#2 před 4 měsíci
- ViPEr*CZ*
- Nette guru

- Registrovaný: 4. 10. 2010
- Příspěvky: 221
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Před 5ti hodinama bych se taky spletl :-D
PS: chybí mi u databáze možnost změny Reflexe… je to možné udělat z konfiguráku? Co jsem tak v rychlosti projel NetteExtension, tak není (nebylo). Je/Bude to možné?
#3 před 4 měsíci
- nanuqcz
- Nette guru

- Registrovaný: 4. 5. 2010
- Příspěvky: 615
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
David Grudl napsal(a):
Databáze
…
Chápu to správně, že tyto dva konfigurační soubory budou pracovat obdobně?
nette:
database:
default:
dsn: "sqlite2:%appDir%/models/demo.db"
user: ...
password: ...
services:
database: @nette.database.default
parameters:
database:
dsn: "sqlite2:%appDir%/models/demo.db"
user: ...
password: ...
services:
database: Nette\Database\Connection(%database.dsn%, %database.user%, %database.password%)
A bude mi při použití prvního způsobu fungovat v presenterech
$this->getService('nette.database.default')? Takže bych ani
nemusel definovat službu database v services?
#4 před 4 měsíci
- ViPEr*CZ*
- Nette guru

- Registrovaný: 4. 10. 2010
- Příspěvky: 221
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
xxxObiWan napsal(a):
A bude mi při použití prvního způsobu fungovat v presenterech$this->getService('nette.database.default')? Takže bych ani nemusel definovat službudatabasevservices?
Ano bude… když to bude v nette, tak to nemusí být v services. A je to dostupné takto:
$container->nette->database->default
#5 před 4 měsíci
- Felix
- Člen

- Registrovaný: 4. 7. 2010
- Příspěvky: 114
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
David Grudl napsal(a):
Šablony
Lze přepínat HTML a XHTML režim šablon:
nette: xhtml: no # výchozí je trueZákladní nakonfigurovanou šablonu s helpery a Latte vyrobí
$container->nette->createTemplate().
bud delam neco blbe, ale zkousel jsme xhtml: no i xhtml: false a porad to generuje xhmtl
EDIT: jsem blbec, aktualizoval jsem nette a uz to jede, jsem si nevsim, ze uz to je opraveny..
Editoval Felix (26. 1. 13:24)
@xf3l1× | http://www.jfx.cz/ | Karta stastna, vecere slastna.
#6 před 4 měsíci
- hAssassin
- Člen

- Registrovaný: 25. 1. 2011
- Příspěvky: 159
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Je nějaká možnost jak nakonfigurovat připojení k dibi
novým způsobem, nebo musím zůstat u starého, klasického? Dík.
#7 před 4 měsíci
- David Grudl
- Administrator

- Registrovaný: 8. 2. 2005
- Příspěvky: 5835
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
xxxObiWan napsal(a):
Chápu to správně, že tyto dva konfigurační soubory budou pracovat obdobně?
V jednom případě vytváříš službu sám, ve druhém případě ti ji vytvoří NetteExtension, který vytvoří i panel do Debugger baru atd. Obě cesty jsou možné.
hAssassin napsal(a):
Je nějaká možnost jak nakonfigurovat připojení k
dibinovým způsobem, nebo musím zůstat u starého, klasického? Dík.
Nevím, co přesně myslíš novým a starým způsobem,
každopádně jakýkoliv objekt/službu můžeš vytvořit klasicky v PHP
(třeba bootstrapu) a uložit do containeru, zápisem v poli services
(dibi: DibiConnection(...)) a pokud pro knihovnu existuje nějaká
CompilerExtension, tak i vytvořením vlastní sekce v configu.
Pro dibi existuje DibiNetteExtension. Připojíme ji v bootstrapu:
$configurator = new Nette\Config\Configurator;
$configurator->onCompile[] = function($configurator, $compiler) {
$compiler->addExtension('dibi', new DibiNetteExtension); // nazev sekce bude dibi
};
a přidáme sekci v config.neon:
dibi:
driver : mysqli
host : localhost
username : root
password : xxx
database : dibi
Službu pak najdeme v $container->dibi->connection.
#8 před 4 měsíci
- hAssassin
- Člen

- Registrovaný: 25. 1. 2011
- Příspěvky: 159
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
@David Grudl: Aha, takhle se na to musí. Zkusim. Díky.
Jinak tím klasickým způsobem jsem myslel definici sluzby dibi v
config.neon:
services:
dibi:
class: \DibiConnection
arguments: ['%database%']
...
parameters:
database:
driver : mysql
host : localhost
username : root
password : xxx
database : dibi
Problém právě je, že při aktualizaci na Nette RC1 a Dibi 2.0 přestane fungovat panel v debug baru.
#9 před 4 měsíci
- RiskyNet
- Člen

- Registrovaný: 19. 9. 2011
- Příspěvky: 20
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
hAssassin napsal(a):
Problém právě je, že při aktualizaci na Nette RC1 a Dibi 2.0 přestane fungovat panel v debug baru.
Zkus přidat do parametru databaze
profiler: TRUE
#10 před 4 měsíci
- sumiisakua
- Člen

- Registrovaný: 24. 1. 2012
- Příspěvky: 56
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Koukám, že config.neon nám pěkně nahradí bootstrap.php. ;)
#11 před 4 měsíci
#12 před 4 měsíci
- hAssassin
- Člen

- Registrovaný: 25. 1. 2011
- Příspěvky: 159
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
RiskyNet napsal(a):
hAssassin napsal(a):
…Zkus přidat do parametru databaze
profiler: TRUE
To ja tam samozrejmne mam, ale stejne to nefunguje. Proble je totiz zde, pokud smazu ten parametr FALSE, tak to uz panel zobrazi v pohode, jinak se to do ty podminky nedostane. Problem asi bude v tom ze to registruju pres sluzbu tak jak sem psal vyse.
#13 před 4 měsíci
- RiskyNet
- Člen

- Registrovaný: 19. 9. 2011
- Příspěvky: 20
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
hAssassin napsal(a):
RiskyNet napsal(a):
hAssassin napsal(a):
…Zkus přidat do parametru databaze
profiler: TRUETo ja tam samozrejmne mam, ale stejne to nefunguje. Proble je totiz zde, pokud smazu ten parametr FALSE, tak to uz panel zobrazi v pohode, jinak se to do ty podminky nedostane. Problem asi bude v tom ze to registruju pres sluzbu tak jak sem psal vyse.
Uz to vidim, me to totiz funguje (taky registruju pres sluzbu) ale pouzivam ted min verzi, tam ten FALSE neni sorry
Editoval RiskyNet (26. 1. 17:42)
#14 před 4 měsíci
- dakota
- Člen

- Registrovaný: 18. 1. 2010
- Příspěvky: 163
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Chcem sa spýtať či je v neon podporovaný len tento zápis
services:
nette.mailer:
class: MyFileMailer
pretože pôvodne mi fungoval aj zápis
services:
mailer:
class: MyFileMailer
pričom ten teraz vyhodí chybu
Nette\DI\ServiceCreationException Service 'nette.mail': Multiple services of type Nette\Mail\IMailer found: nette.mailer, mailer
#15 před 4 měsíci
- David Grudl
- Administrator

- Registrovaný: 8. 2. 2005
- Příspěvky: 5835
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Je to tím, že ve starší revizi mi chybělo u v názvu služby
nette.. Správně je první zápis.
#16 před 4 měsíci
- Milo
- Nette guru

- Registrovaný: 4. 5. 2010
- Příspěvky: 298
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
hAssassin napsal(a):
RiskyNet napsal(a):
hAssassin napsal(a):
…Zkus přidat do parametru databaze
profiler: TRUETo ja tam samozrejmne mam, ale stejne to nefunguje. Proble je totiz zde, pokud smazu ten parametr FALSE, tak to uz panel zobrazi v pohode, jinak se to do ty podminky nedostane. Problem asi bude v tom ze to registruju pres sluzbu tak jak sem psal vyse.
Problém je v tom, že se DibiConnection.php includuje přes
RobotLoader a ne přes dibi.php ve kterém se loaduje
třída DibiNettePanel pro panel. Když odstraníš to FALSE,
RobotLoader ti automaticky natáhne i
DibiNettePanel.
#17 před 4 měsíci
- David Grudl
- Administrator

- Registrovaný: 8. 2. 2005
- Příspěvky: 5835
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Problém s dibi by měl být vyřešen.
#18 před 4 měsíci
- Caine
- Člen

- Registrovaný: 21. 12. 2011
- Příspěvky: 67
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Zdravím, jak si nastavim u db vlastní Reflection?
#19 před 4 měsíci
- uestla
- Nette guru

- Registrovaný: 21. 8. 2009
- Příspěvky: 438
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Záleží, jak přesně ji registruješ – pokud pomocí NetteExtension, pak např. takto:
common:
nette:
database:
default:
# ...
services:
nette.database.default:
setup:
- setDatabaseReflection( MyReflection() )
Nebo se mýlím? Píši z paty…
#20 před 4 měsíci
- David Grudl
- Administrator

- Registrovaný: 8. 2. 2005
- Příspěvky: 5835
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Přidal jsem možnost uvést reflection: conventional
#21 před 4 měsíci
- HosipLan
- Nette guru

- Registrovaný: 1. 6. 2009
- Příspěvky: 2637
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Předpokládám, že v dokumentaci se takový přehled bude lépe udržovat: http://doc.nette.org/…te-framework
Neptej se, jestli se můžeš ptát | Blog | Twitter | GitHub | CMS Kdyby
Nette Jabber Room – nette@conf.netlab.cz , všichni jste vítáni
#22 před 4 měsíci
- Patrik Votoček
- Nette Evangelist

- Registrovaný: 8. 3. 2008
- Příspěvky: 2122
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
super… taky jsem vnoci zvažoval že to tam překlopím… :-)
Sorry my bad english.
Vrtak-CZ | Nella Project | Osobní Blog | Twitter | LinkedIn | GitHub
„Nastala chyba která neměla nastat“ aneb „Když se chce
všechno jde.“
#23 před 3 měsíci
- Felix
- Člen

- Registrovaný: 4. 7. 2010
- Příspěvky: 114
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
David Grudl napsal(a):
Security
nette: security: roles: guest: member: admin: [member] # admin dědí od membera resources: file:
Co tam dodelat i polozku rules, neco jako:
nette:
security:
rules:
guest: {[login], [view]}
user: [[homepage,articles], [add,delete,edit]]
@xf3l1× | http://www.jfx.cz/ | Karta stastna, vecere slastna.
#24 před 3 měsíci
- hrach
- Nette guru

- Registrovaný: 11. 3. 2007
- Příspěvky: 519
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
@Felix: –1 :P Něco, co nejde udělat plnohodnotně bych tam moc nestrkal. Už takhle je to víc konfigurace než programování – fuj :D
#25 před 3 měsíci
- uestla
- Nette guru

- Registrovaný: 21. 8. 2009
- Příspěvky: 438
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Je to opravdu super.
Nicméně routování v konfigu (ač experimentální) je takové svázané, neboť se nedají předávat flagy (jednosměrky, chráněné routy, …).
Plánuje se tato funkčnost přidat? Myslím, že by to mohla být jediná věc, která by experimentálnost přesunula k plnohodnotnému využití – nebo něco přehlížím?
Díky!
#26 před 3 měsíci
- David Grudl
- Administrator

- Registrovaný: 8. 2. 2005
- Příspěvky: 5835
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
uestla napsal(a):
Nicméně routování v konfigu (ač experimentální) je takové svázané, neboť se nedají předávat flagy (jednosměrky, chráněné routy, …).
Nedá se měnit ani třída atd. Chce to vymyslet nějakou pěknou syntax.
#27 před 3 měsíci
- uestla
- Nette guru

- Registrovaný: 21. 8. 2009
- Příspěvky: 438
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Felix napsal(a):
Co tam dodelat i polozku rules, neco jako:
…
Tohle si zatím realizuji pomocí
common:
services:
nette.authorizator:
setup:
- @self::allow( guest )
#28 před 3 měsíci
- Vyki
- Nette guru

- Registrovaný: 12. 7. 2009
- Příspěvky: 436
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Chtěl bych jenom upozornit na jednu maličkost.
services:
database: @Nette\Database\Connection
authenticator: Authenticator( @database::table(users) )
myService:
class: MyServiceClass(@database, ClassWithParams('id', '%s_id', '%s'), ClassWithoutParams())
Pokud jako parametr volím třídu, která nemá v konstruktoru povinné paramatry, tedy PHP zápis
$class = new ClassWithoutParams;
musím v neon zápisu stejně použít prázdné závorky
ClassWithoutParams() za názvem třídy. Jinak se to přeloží
jako 'ClassWithoutParams' a ne new ClassWithoutParams.
Dává to logiku, protože je to asi jediný způsob jak to v tom neon zápisu
odlišit od řetězce, jenom se potřeba si to ohlídat.
Editoval Vyki (8. 2. 12:04)
http://ie6funeral.com – Kill IE6 ! ! !
#29 před 3 měsíci
- ViPEr*CZ*
- Nette guru

- Registrovaný: 4. 10. 2010
- Příspěvky: 221
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Tohle
$class = new ClassWithoutParams;
bych úplně vyhodil… kompilátor c++ by na tomhle řval.
Editoval ViPEr*CZ* (8. 2. 18:07)
#30 před 3 měsíci
- uestla
- Nette guru

- Registrovaný: 21. 8. 2009
- Příspěvky: 438
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
A javascript?
#31 před 3 měsíci
- Juan
- Člen

- Registrovaný: 11. 4. 2009
- Příspěvky: 144
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
ViPErCZ napsal(a):
Tohle
$class = new ClassWithoutParams;bych úplně vyhodil… kompilátor c++ by na tomhle řval.
Vyhodil odkud? Z PHP? :D
A co sem taháte C++ a Javascript?
#32 před 3 měsíci
- ViPEr*CZ*
- Nette guru

- Registrovaný: 4. 10. 2010
- Příspěvky: 221
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Juan napsal(a):
ViPErCZ napsal(a):
Tohle
$class = new ClassWithoutParams;bych úplně vyhodil… kompilátor c++ by na tomhle řval.
Vyhodil odkud? Z PHP? :D
A co sem taháte C++ a Javascript?
Ano myšleno z PHP. Jen jsem chtěl vyjádřit souhlas se správností syntaxe s používáním závorek u bezparametrického konstruktoru.
#33 před 3 měsíci
- Nox
- Nette guru

- Registrovaný: 16. 10. 2010
- Příspěvky: 319
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Kromě toho, že to je offtopic
- Bezzávorková konstrukce v C++ očividně existuje
- Správnost? V PHP je výraz new SomeClass; naprosto jednoznačný a nemůže znamenat nic jiného než instanciace třídy SomeClass bez předání parametrů, proto je to v PHP bez problémů povoleno.
#34 před 3 měsíci
- uestla
- Nette guru

- Registrovaný: 21. 8. 2009
- Příspěvky: 438
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Viper začal něco, co nechápu, proto jsem jeho C++ snažil trumfnout javascriptem…
Nicméně chápu, že to, na co upozornil Vyki, může být
matoucí. Jednak instance se vytváří pomocí závorek, ale u specifikace
class: se píše jen řetězcovité jméno třídy (čili bez
závorek).
#35 před 3 měsíci
- ViPEr*CZ*
- Nette guru

- Registrovaný: 4. 10. 2010
- Příspěvky: 221
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
@Nox: kruci… trapas… ono to fakt existuje… beru zpět… přepracovanost.
#36 před 3 měsíci
- David Grudl
- Administrator

- Registrovaný: 8. 2. 2005
- Příspěvky: 5835
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Nicméně chápu, že to, na co upozornil Vyki, může být matoucí. Jednak instance se vytváří pomocí závorek, ale u specifikace
class:se píše jen řetězcovité jméno třídy (čili bez závorek).
Protože class je skutečně jméno třídy, tedy řetězec. Má
smysl jej uvádět pouze v situacích, kdy se volá nějaká továrna a není
známo, co vrací. Obecné doporučení by asi mělo být používat vždy
factory.
#37 před 3 měsíci
- Vyki
- Nette guru

- Registrovaný: 12. 7. 2009
- Příspěvky: 436
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Ještě bych si dovolil jednu poznámku ohledně
[...]
routes:
index.php: Dashboard:default
'<presenter>/<action>[/<id>]': Dashboard:default
[...]
Na definici jednoduchých rout je to super. I kdyby to z Nette zmizelo ve
svém FW si to nechám. Má to ale jednu vadu na kráse – nelze definovat
FLAG. Osobně jsem si ve svém Extension dodělal
podporu, která umožňuje psát toto:
[...]
routes:
index.php: [Homepage:default, ONE_WAY]
'<presenter>/<action>[/<id>]': Homepage:default
[...]
Oproti původnímu kódu v NetteExtension vypadá můj kód následovně.
[...]
if(is_array($action))
$router->addSetup('$service[] = new Nette\Application\Routers\Route(?, ?, ?)', array($mask, $action[0], constant("Nette\Application\Routers\Route::{$action[1]}")));
else
$router->addSetup('$service[] = new Nette\Application\Routers\Route(?, ?)', array($mask, $action));
[...]
To s tím constant tam mám kvůli tomu, že jsem si nedovedl představit,
jak budu psát jako FLAG v konfiguračním souboru celou cestu
k té konstantě. To by asi moc hezké nebylo tam psát
Nette\Application\Routers\Route::ONE_WAY
Asi to není úplně ideální, ale minimálně u jedné routy v každé
aplikaci ten FLAG napsat potřebuji.
http://ie6funeral.com – Kill IE6 ! ! !
#38 před 3 měsíci
- uestla
- Nette guru

- Registrovaný: 21. 8. 2009
- Příspěvky: 438
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Koukni 3 dny zpátky ;-)
#39 před 3 měsíci
- Vyki
- Nette guru

- Registrovaný: 12. 7. 2009
- Příspěvky: 436
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
uestla napsal(a):
Koukni 3 dny zpátky ;-)
Tak to sorry za spam, toho jsem si nevšiml.
Chtěl jsem se ještě zeptat jestli někdo neví, jakým způsobem si lze
jednoduše pomocí nové konfigurace zaregistrovat vlastní makro. Mám již
vytvořenou třídu potomka MacroSet, která ovšem chce ve
statické metodě install instanci Nette\Latte\Compiler a netuším
jak se k ní snadno v při konfiguraci dostat. Dříve jsem to řešil
přetížením metody Presenter::templatePrepareFilters v
BasePresenteru, ale to samé potom musím udělat i v
BaseControl, tak mě napadlo zda by to nyní nešlo
elegantněji.
http://ie6funeral.com – Kill IE6 ! ! !
#40 před 3 měsíci
- HosipLan
- Nette guru

- Registrovaný: 1. 6. 2009
- Příspěvky: 2637
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
@Vyki: něco jako
services:
nette.latte:
setup:
- MyMacroSet::install($service->compiler)
Editoval HosipLan (10. 2. 7:39)
Neptej se, jestli se můžeš ptát | Blog | Twitter | GitHub | CMS Kdyby
Nette Jabber Room – nette@conf.netlab.cz , všichni jste vítáni
#41 před 3 měsíci
- gmvasek
- Nette guru

- Registrovaný: 19. 3. 2009
- Příspěvky: 1015
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Nebo pokud registruješ maker hromadu, extendni si Nette\Latte\Engine, v konstruktoru zaregistruj makra a v configu třídu nahraď svou.
#42 před 3 měsíci
- Vyki
- Nette guru

- Registrovaný: 12. 7. 2009
- Příspěvky: 436
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
HosipLan napsal(a):
@Vyki: něco jako …
Když dám místo service factory tak už se blížím k úspěchu a do
těla té továrničky mi to vloží to MyMacroSet::install.
Nevypořádá se to ale s tím ($service->compiler) vypíše to
Unexpected '>compiler)' on line 51, column 41, takže jsem šel
zatím cestou rozšíření Nette\Latte\Engine.
Edit: Koukám, že lze také využít makro {use MacroSet}, ale
to se mi moc nelíbí dávat tuto logiku do šablony.
Editoval Vyki (10. 2. 11:18)
http://ie6funeral.com – Kill IE6 ! ! !
#43 před 3 měsíci
- martyx
- Nový člen

- Registrovaný: 11. 2. 2012
- Příspěvky: 5
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Pokouším se přepsat konfiguraci session do neonu. Poradil by mi někdo z nette pardálů, jestli jde nastavit nějakým způsobem cookiePath, tak aby vedla k projektu, zanořeném ve více složkách? V bootstrapu to řeším takto:
$container->session->setCookieParameters($container->httpRequest->url->scriptPath, $_SERVER['SERVER_NAME']);
Něco jako tohle, což mi nejde:
nette:
session:
autoStart: smart
expiration: +14days
cookie_path: @httpRequest.uri.scriptPath
Bez toho mám část konfigurace v neonu a část v bootstrapu, což bych rád měl na jednom místě. Díky za pomoc.
#44 před 3 měsíci
- mkoubik
- Nette guru

- Registrovaný: 28. 4. 2009
- Příspěvky: 259
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Nevím jestli není plus speciální znak, zkus to dát do uvozovek:
expiration: '+14days'.
#45 před 3 měsíci
- martyx
- Nový člen

- Registrovaný: 11. 2. 2012
- Příspěvky: 5
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
mkoubik napsal(a):
Nevím jestli není plus speciální znak, zkus to dát do uvozovek:
expiration: '+14days'.
Díky, ale v tom problém není, to funguje dobře. Ostatně je to podle Davidova vzoru z úvodu tohodle topicu. Jedná se mi o to cookie_path, resp. jak mu nastavit cestu. Můžu to tam samozřejmě dát ručně na tvrdo, ale pohodlnější by pro mě bylo dynamické načtení cesty. Zkusil jsem jen odhadem @httpRequest.uri.scriptPath, ovšem to je nejspíš blbost. Třeba existuje nějaká možnost.
#46 před 3 měsíci
- RiskyNet
- Člen

- Registrovaný: 19. 9. 2011
- Příspěvky: 20
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Já si taky střelím :) dle „Lze nastavovat všechny PHP direktivy (ve formátu camelCase)“
zkusil jsi
cookiePath: @httpRequest.uri.scriptPath
#47 před 3 měsíci
- martyx
- Nový člen

- Registrovaný: 11. 2. 2012
- Příspěvky: 5
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
RiskyNet napsal(a):
Já si taky střelím :) dle „Lze nastavovat všechny PHP direktivy (ve formátu camelCase)“
zkusil jsi
cookiePath: @httpRequest.uri.scriptPath
Zkusil. V tom taky problém není. Nejde o název vlastnosti, ale její hodnotu. Pokud tam zapíšu ručně
session:
autoStart: smart
expiration: +14days
cookie_path: /projects/project
tak je to v pohodě, viz dump session:
Nette\Http\Session(4) {
regenerationNeeded private => NULL
options private => array(16) {
cookie_domain => "localhost" (9)
cookie_secure => NULL
cookie_path => "/projects/project" (17)
gc_maxlifetime => 1209600
cookie_lifetime => 1209600
...
}
ale můj pokus s
session:
autoStart: smart
expiration: +14days
cookie_path: @httpRequest.uri.scriptPath
končí laděnkou s hláškou
Reference to missing service 'httpRequest.uri.scriptPath'
Zajímavý je, že když tam dám jen službu httpRequest
session:
autoStart: smart
expiration: +14days
cookie_path_test: @httpRequest
tak to projde, viz dump session:
Nette\Http\Session(4) {
regenerationNeeded private => NULL
options private => array(16) {
cookie_domain => "localhost" (9)
cookie_secure => NULL
cookie_path_test => Nette\Http\Request(9) {
method private => "GET" (3)
url private => Nette\Http\UrlScript(10) { ... }
query private => array(0)
post private => array(0)
files private => array(0)
cookies private => array(7) { ... }
headers private => array(9) { ... }
remoteAddress private => "127.0.0.1" (9)
remoteHost private => NULL
}
gc_maxlifetime => 1209600
cookie_lifetime => 1209600
...
}
Nejspíš je pravděpodobný, že jsem tele a nechápu něco důležitýho. Např. něco s životním cyklem. Třeba v době sestavování kontejneru, ve chvíli zpracovávání mojí session, ještě není nastavana služba httpRequest.
#48 před 3 měsíci
- uestla
- Nette guru

- Registrovaný: 21. 8. 2009
- Příspěvky: 438
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
Co vím, tak NEON zatím neumí zřetězené volání metod na službě, čili nejde
@httpRequest::getUrl()::getScriptPath() # nebo něco na ten způsob
Co ale jde, je udělat si pomocnou službu na UrlScript a na ní pak volat
getScriptPath():
nette:
session:
autoStart: smart
expiration: '+ 14 days'
cookie_path: @urlScript::getScriptPath()
services:
urlScript:
factory: @httpRequest::getUrl()
Nezkoušel jsem, píši to z paty, snad bude fungovat …
#49 před 3 měsíci
- martyx
- Nový člen

- Registrovaný: 11. 2. 2012
- Příspěvky: 5
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
uestla napsal(a):
Co vím, tak NEON zatím neumí zřetězené volání metod na službě, čili nejde
Díky, to zkusím. K tomu řetězení mě navedlo dibi, resp. @dibi.connection. Protože takhle mi to funguje.
services:
sitemapModel: \Models\Sitemap\SitemapModel(@dibi.connection)
...
Tak jsem to zkusil i na tento případ. Ale ta pomocná služba je dobrej nápad. To by mělo jít.
#50 před 3 měsíci
- uestla
- Nette guru

- Registrovaný: 21. 8. 2009
- Příspěvky: 438
Re: NetteExtension aneb konfigurace všeho v Nette pomocí config.neon
No ale
@dibi.connection
přistupuje k „subservice“, neboli
services:
dibi:
connection: DibiConnection( ... )
Což je jiné, než když se volá metoda na službě, nebo se mýlím?