Zobrazeni vlastni chyby u komponenty

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

Zdravim, mam dotaz ohledne zobrazeni vlastni chyby ve formulari…

formular si vytvarim v sablone sam

{!$control['zapomenuteHeslo']->elementPrototype->startTag()}
<p>{$control['zapomenuteHeslo-email']->label} {$control['zapomenuteHeslo-email']->control}<span n:foreach="$presenter['zapomenuteHeslo-email']->errors as $chyby" class="chyba">{$chyby}</span></p>
<p>{$control['zapomenuteHeslo-odeslat']->control}</p>
{!$control['zapomenuteHeslo']->elementPrototype->endTag()}

a potrebuju vlozit hlasku ke komponente zapomenuteHeslo-email

v prezenteru mam tedy toto

public function formZapomenuteHeslo($form) {
	$data = $form->getValues();

	if (!Uzivatele::jeRegistrovanyEmail($data['email'])) {
	    $form->addError("Tento email není zaregistrovaný. Použijte jiný.");
	    return;
	}

Tim se ale vklada error hlaska k formulari a nikoliv k e-mail polozce.

Poradi nekdo? DIKY!

Filip Procházka
Moderator | 4668
+
0
-

V první řadě… co to renderování? :)

{form zapomenuteHeslo}
<p>{label email /} {input email}
	<span n:foreach="$form['email']->errors as $error" class="chyba">{$error}</span>
</p>
<p>{input odeslat}</p>
{/form}

Proč to dělat jednoduše, když to jde složitě. Že :)

No a k té hlášce…

public function formZapomenuteHeslo($form)
{
	$data = $form->getValues();

	if (!Uzivatele::jeRegistrovanyEmail($data['email'])) {
		// chyby jde přidávat i přímo prvku, do formuláře se předá sama
		$form['email']->addError("Tento email není zaregistrovaný. Použijte jiný.");
		return;
        }

	// ...

No a ten tvuj čecho-english je horzný :) Otevři si http://translate.google.cz/ a trochu se snaž ;)

D4
Člen | 2
+
0
-

Paani, moc diky, ulehcil jsi mi zivot :)

PS: co se tyka čecho-english – anglictina mi problem rozhodne nedela, ale jsem cech, mluvim cesky, tak i programuju cesky. Nevim, co je na tom k nepochopeni. Navic kod stejne uvidim jen ja a kolega.

Filip Procházka
Moderator | 4668
+
0
-

Je dobrým programátorským zvykem psát kód anglicky. Kdyby php bylo česky, dávalo by smysl programovat česky, ale ono není, proto volání jako jsou třeba

$user = $uzivatele->getUzivatel($id);
// nebo
$retezec1 = str_replace('a', 'b', $retezec2);

Vypadají opravdu neprofesionálně.

petr.pavel
Člen | 535
+
0
-

Rád bych se zastal D4, s češtinou/angličtinou to cítím podobně. Prohlášení, že čeština vypadá blbě a neprofesionálně považuji za demagogii. Kdo má zájem, může se podívat na moje argumenty.

Platí ovšem, že název proměnné $retezec (nebo $string) je špatně. Z názvu má být vidět, co je obsahem a jakou formu to má.

Editoval petr.pavel (10. 11. 2011 16:51)

Filip Procházka
Moderator | 4668
+
0
-

O tom už jsme se jednou bavili a víš moc dobře jak to skončilo. Žádný guru s tebou nesouhlasil.

petr.pavel
Člen | 535
+
0
-

Vím, jak to dopadlo: nesouhlasil se mnou nikdo z aktivní komunity kolem Nette. To bych ale nepovyšoval na absolutní pravdu, a proto jsem se tady D4 zastal.

Komunita kolem Nette mi přijde v něčem jiná než u ostatních projektů, na které jsem narazil. To je v pořádku, v tom je jedno z kouzel open source jako fenoménu, je tu demokracie. Časem se třeba může stát, že převáží jiný názor a situace bude jiná.

<nadsazka>

Komu se to nelíbí, může si spravovat vlastní fórum/dokumentaci, kde se budou příklady uvádět v češtině. :-)

</nadsazka>