Prevod na Nette 2.2.6 – problemy, bugy, dotazy

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Kurtas
Člen | 109
+
0
-

Ahoj,

prechazim z 2.0.15 na 2.2.6 vetsinu problemu se mi povedlo vyresit, ale mam par dotazu a i bugy:

-------- Latte:

Pokud rucne vykresluji Form tak latte nerespektuje parametr class, nevim jestli to povazovat za bug, drive to bylo funkcni, dle me by to melo jit i v latte (at si tam da designer co che) nejen na tvrdo ve formu. Kazdopadne mi to dela dost problemu, vetsinu class nastavejeme takhle v latte + na tom jsou napsane JS

{input inter class => "input-inter input-small offset0"}

Dalsi problem je BUG v Latte spatny preklad viz nize → fatal error

{var $x++} //prelozi jako $x++=NULL

Dale jsem narazil na problem s NOESCAPE makrem, v PHP si generuji HTML ktere pak predam do latte promene a promenou nasledne v latte vkladam do JS scriptu. Drive pravdepodobne latte odstranovalo zalomeni radku i pri NOESCAPE, ted to nedela.

--------- Komponenty
v jedne komponente pouzivam FORM (UI\Forms\Form) nyni se mi nezavola onSuccess callback, musel jsem nahradit onSubmit … ale nechapu proc, zadne validacni pravidla tam nejsou, se starou verzi to fungovalo

petr.jirous
Člen | 128
+
0
-

toto {input inter class => "input-inter input-small offset0"} by mělo fungovat stále, problém bude někde jinde.

Než něco nazveš BUGem, tak si ověř, zda to neděláš špatně ty. {var $x++} makro var ti vytváří proměnnou, což ty nechceš. Nahraď za {? $x++}

UI\Forms\Form místo tohoto použij Application\UI\Form

Editoval petr.jirous (24. 11. 2014 17:16)

Michalek
Člen | 211
+
0
-

1. Přidávání class pro input mi na 2.2.6 funguje standardně, mám to jen s čárkou: {input date, class => 'form-control'} ale to by asi nemělo hrát roli.

3. Dědíš \Nette\Application\UI\Form nebo \Nette\Forms\Form? Bohužel to hraje roli…

Editoval Michalek (24. 11. 2014 17:05)

Kurtas
Člen | 109
+
0
-

@petr.jirous
{? $x++} funguje, diky

@Michalek

  1. Na text inputech to class funguje, ale na checkboxu ne
  2. Sorry napsal jsem ten Namespace spatne, v te komponente pouzivam \Nette\Application\UI\Form (ale zkousel jsem i ten druhej)

Editoval Kurtas (24. 11. 2014 17:14)

David Matějka
Moderator | 6445
+
0
-

1. checkboxy se ted renderujou jinak, {input} makro vykresli oboje – label s inputem uvnitr, bohuzel tak neni mozne ovliznit atributy. Muzes ale pouzit zcela manualni renderovani pomoci dvojtecky,

{label foo:}{input foo: class=>'bar'} Label{/label}

2. ukaz kod ty komponenty…

Kurtas
Člen | 109
+
0
-

Jeste jsem zapomel na jednu vec: K cemu je dobry ze se u SelectBoxu kontroluje jestli hodnota odpovida nejake polozkce v setItems? Vypnout se to nijak neda, proc se neco takoveho vnucuje?

Kurtas
Člen | 109
+
0
-

@matej21
1. Diky moc, pres ty dvojtecky to slape

2. Jedna se o NiftyGrid viz https://github.com/…rid/Grid.php#L731

Etch
Člen | 403
+
+3
-

Kurtas napsal(a):

Jeste jsem zapomel na jednu vec: K cemu je dobry ze se u SelectBoxu kontroluje jestli hodnota odpovida nejake polozkce v setItems? Vypnout se to nijak neda, proc se neco takoveho vnucuje?

Aby se tam nedala podstrčit jakákoliv „pytlovina“… :)

Kurtas
Člen | 109
+
0
-

Etch napsal(a):

Kurtas napsal(a):

Jeste jsem zapomel na jednu vec: K cemu je dobry ze se u SelectBoxu kontroluje jestli hodnota odpovida nejake polozkce v setItems? Vypnout se to nijak neda, proc se neco takoveho vnucuje?

Aby se tam nedala podstrčit jakákoliv „pytlovina“… :)

Tj to chapu, ale cekal bych ze to bude mozne vypnout :)

Etch
Člen | 403
+
0
-

Ptal jses k čemu je to dobré. :) No vypnutí… Z mého pohledu pokud potřebuješ tuhle kontrolu vypnout, tak určitým způsobem „zneužíváš“ select box.

matopeto
Člen | 395
+
0
-

Neni problem podedit si vlastny selectbox a pretazit setValue metodu: https://api.nette.org/…rol.php.html#…

Filip Procházka
Moderator | 4668
+
0
-

@matopeto a nebo prostě použiješ metodu getRawValue()

Kurtas
Člen | 109
+
0
-

Dalsi zvlastnost, ve formu mam TextInput kteremu nastavuji DefaultValue a pokud mam nastaveno setDisabled tak se input renderuje bez hodnoty. Samozrejme resi to manualni render, jen nevim jestli je to bug nebo ocekovane chovani.

$this->addText("name", "Name")->setDefaultValue($user->name)->setDisabled();

Edit:
Resenim volat setDefaultValue po setDisabled, nevim proc se v setDisabled maze hodnota

$this->addText("name", "Name")->setDisabled()->setDefaultValue($user->name); ;

Editoval Kurtas (25. 11. 2014 9:42)

jiri.pudil
Nette Blogger | 1032
+
0
-

V čem je to zvláštnost? Prohlížeče hodnotu disabled inputů ani neposílají, takže to moc nedává smysl. Asi spíš chceš ten input nastavit jako readonly.

Kurtas
Člen | 109
+
0
-

Ano presne ten input ma byt readonly a zobrazovat jen hodnotu. Me to chovani nevadi, jen nerozumim k cemu je to dobry, resp jake to setDisabled ma jine vyuziti nez ze se ma renderovat readonly input ktery zobrazuje hodnotu?

jiri.pudil
Nette Blogger | 1032
+
0
-

Jiné využití vskutku nemá. Liší se od sebe právě tím, že zatímco readonly input se posílá, disabled ne. Pak taky readonly input – na rozdíl od disabled – může dostat focus, má tabindex a uživatel v něm může vybrat text a kopírovat ho. Záleží tedy na tvém use case. Viz také http://stackoverflow.com/…donly-for-ht

Kurtas
Člen | 109
+
0
-

Mam formular se SelectBoxy a tento formular nema addProtection. Pokud mam formular otevreny dyl (nevim presne jak dlouho, mel jsem to pres noc na uspanem notebooku) tak prvni submit formulare zahlasi error „Please select a valid option.“ → coz je hlaska pro nevalidni SelectBox, ale kdyz zkontroluji co se posila v POST tak ma spravnou hodnotu, dalsi submit funguje v poradku a v POST se posilaji uplne stejne data.

Napada nekoho cim by to mohlo byt? Blbe se to trackuje kdyz to dela az po nejake dobe :)

matopeto
Člen | 395
+
0
-

Jedine co ma napada je, ze ma nette zapisane nieco v session, inac tam nema co vyprsat, ale je blbe, skus pozriet do zdrojakov.